合并2个数据帧的名称并将其分配给第三个R

合并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.framem,并给它一个新的名字是名第一个data.frameabc)后跟'_city'。因此,在您的示例中,您最终将得到一个名为abc_citydata.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)

+0

它仍然无法正常工作。给出以下错误信息:在assign(paste(nm,“city”,sep =“_”),join(x = x,y = latlong,: 只有第一个元素被用作变量名称 – Kaushik

+0

立即尝试。编辑datafame,你不能得到它的名字,所以你必须将它保存为你在函数中做的第一件事。 – Eumenedies