2017-08-08 96 views
0

我已經編寫了一個合併以加入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」。

在此先感謝!

回答

0

我想你是說你有一個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

相關問題