合并2个数据帧的名称并将其分配给第三个R
问题描述:
我已经编写了一个合并以加入2个数据帧的函数。但是我得到的加入文件应该以“x_city”之类的名字格式存储。合并2个数据帧的名称并将其分配给第三个R
test<- function(x,m=csv){
a=as.data.frame(m, stringsAsFactors = FALSE)
b=a[,-c(1)]
x$long=as.numeric(x$long)
x$long=round(x$long,5)
x$lat=as.numeric(x$lat)
x$lat=round(x$lat,5)
df_name<-paste()
name<-paste(x,"city", sep="_")
name=join(x=x ,y=b, by = c("long","lat"))
}
测试(ABC中,m = CSV)
所以,最终的数据帧应该是 “abc_city”。
在此先感谢!
答
我想你是说你有一个data.frame
调用,例如,abc
和你想用dplyr
的加入加入它到另一个data.frame
,m
,并给它一个新的名字是名第一个data.frame
(abc
)后跟'_city'。因此,在您的示例中,您最终将得到一个名为abc_city
的data.frame
。
因此,您在函数中创建的变量仅存在于函数的范围中 - 如果添加return语句,调用test(abc, m = csv)
将打印出名称为name
的值,但不会将其存储在变量中。为了将其存储在一个名为abc_city
变量,你会用在智乐的回答
abc_city <- test(abc, m = csv)
大厦,您可以使用创建的母画面的数据帧:
test<- function(x,m=csv){
nm <-deparse(substitute(x))
# a=as.data.frame(m, stringsAsFactors = FALSE)
# b=a[,-c(1)]
# x$long=as.numeric(x$long)
# x$long=round(x$long,5)
# x$lat=as.numeric(x$lat)
# x$lat=round(x$lat,5)
assign(paste(nm, "city", sep="_"), join(x=x ,y=b, by = c("long","lat")), envir = parent.frame())
return(get(paste(x, "city", sep="_")))
}
并把它作为你的问题
test(abc, m=csv)
它仍然无法正常工作。给出以下错误信息:在assign(paste(nm,“city”,sep =“_”),join(x = x,y = latlong,: 只有第一个元素被用作变量名称 – Kaushik
立即尝试。编辑datafame,你不能得到它的名字,所以你必须将它保存为你在函数中做的第一件事。 – Eumenedies