组合2个数据帧的名称,并在R中将其指定为ti

时间:2017-08-08 15:23:21

标签: r string

我编写了一个函数来组合加入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”。

提前致谢!!

1 个答案:

答案 0 :(得分:0)

我认为您说有一个data.frame被调用,例如abc,您希望使用dplyr的联接将其加入另一个data.frame },m,并为其指定一个新名称,该名称是第一个data.frameabc)的名称,后跟'_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="_"))) }