2017-08-08 6 views
0

2つのデータフレームを結合する機能を作成しました。しかし、私が得ている結合されたファイルは、 "x_city"のような名前の形式で格納されるべきです。2つのデータフレームの名前を結合し、それを3番目に割り当てます

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

は、私はあなたが例えば、abcため、data.frameが呼び出さ持っていて、別のdata.framemにsがそれに参加する参加dplyr」を使用したい、それにの名前で新しい名前を与えるだろうと言っていると思います最初はdata.frameabc)で、その後に '_city'が続きます。したがって、あなたの例ではdata.frameabc_cityと呼ばれるでしょう。

関数で作成する変数は、関数のスコープ内にのみ存在します。test(abc, m = csv)はreturn文を追加すると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

データファイルを編集すると、それ以上の名前を取得することができないため、関数内で最初に行う必要があります。 – Eumenedies

関連する問題