2017-11-27 19 views
1

の新しいデータフレームの名前として使用すると、これは非常に簡単ですが、この小さな問題の解決方法を検索して見つけることができませんでした。私は、例えば、新しいデータフレームの名前として、関数の引数を使用したい関数の引数をR

assign.dataset<-function(dataname){ 
    x<-c(1,2,3) 
    y<-c(3,4,5) 
    dataname<<-rbind(x,y) 
} 

その後

assign.dataset(new.dataframe.name) 

は、名前だけdatanameで新しいデータセットを作成します

ペーストの機能を割り当てようとしましたが、成功しませんでした。

感謝

+1

これではない技術的に可能な、機能が自分の外の変数を作成するべきではないもののR.で物事を行うための良い方法範囲。 'create_dataset()'が単に 'rbind(x、y)'を返す 'dataname < - create_dataset()'のようなものを考えてみましょう。 – MrFlick

答えて

1

あなたはこのようにそれを行うことができます...ここで

assign.dataset<-function(dataname){ 
    x<-c(1,2,3) 
    y<-c(3,4,5) 
    assign(deparse(substitute(dataname)), rbind(x,y), envir=.GlobalEnv) 
} 

assign.dataset(new.dataframe.name) 

new.dataframe.name 
    [,1] [,2] [,3] 
x 1 2 3 
y 3 4 5 
1

はアンドリューの答え@に相当rlangです:

library(rlang) 

assign.dataset<-function(dataname){ 
    x<-c(1,2,3) 
    y<-c(3,4,5) 
    assign(quo_name(enquo(dataname)), rbind(x,y), envir=.GlobalEnv) 
} 

assign.dataset(test_df) 

enquoはによって提供さ引数を取り込みその関数が呼び出された環境をquosureにバンドルします。 quo_nameは、quosureを文字に変換します。

しかし、私はあなたの関数の出力をオブジェクトに代入するのではなく、に対してアドバイスに対してこれを行うでしょう。以下は、私はそれを行うだろうかです:

assign.dataset<-function(){ 
    x<-c(1,2,3) 
    y<-c(3,4,5) 
    rbind(x,y) 
} 

test_df = assign.dataset() 

結果:

[,1] [,2] [,3] 
x 1 2 3 
y 3 4 5 
関連する問題