我编写了一个函数来组合加入2个数据帧。但是我得到的连接文件应该以名称格式存储,例如“x_city”。
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”。
提前致谢!!
答案 0 :(得分:0)
我认为您说有一个data.frame
被调用,例如abc
,您希望使用dplyr
的联接将其加入另一个data.frame
},m
,并为其指定一个新名称,该名称是第一个data.frame
(abc
)的名称,后跟'_city'。因此,在您的示例中,您最终会得到名为data.frame
的{{1}}。
因此,您在函数中创建的变量仅存在于函数的范围内 - 如果添加return语句,则调用abc_city
将打印出名称test(abc, m = csv)
的值,但它赢了“将它存储在一个变量中。为了将其存储在名为name
的变量中,您将使用
abc_city
基于Chi Pak的答案,您可以使用以下方法在父框架中创建数据框:
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="_")))
}