2017-03-25 3 views
0

私は単純な関数を書いていますが、入力に基づいてこの関数から返される出力に一意の名前をどのように割り当てることができるのか分かりません。私の機能の出力の名前が私の入力に関連していることを確認する方法は?

また、私は私は以下のコード(側の質問)にtrain <-test<-を使用する場合、関数の出力を取得する方法私の心をエスケープされているため、関数から所望の出力を得るために<<-を使用しています。

train_data <- function(x,ratio=80){ 
set.seed(397) 
index <- 1:length(x) 
tr_index<- index[sample(c(T,F), length(x), replace = T, prob = c((ratio)/100,(100-ratio)/100))] 

train <<- x[tr_index] 
test <<- x[!(index %in% tr_index)] 
} 

私は、コマンドが、私は私の環境で表示されるようにtrain_atest_aを希望train_data(a)あるのであれば、毎回上書きされるように出力したくありません。私はこの機能にpaste0()を強制しようとしていますが、方法はわかりません。ありがとう。

答えて

1

グローバル代入演算子を使用して関数環境の外部に到達する代わりに、関数が列車とテストセットを含むリストを返すようにしてください。私はまた、コードを合理化しようとしました:

train_data <- function(x, fraction=0.8){ 
    tr_index = sample(1:nrow(x), floor(nrow(x) * fraction))) 
    return(list(train=x[tr_index, ], test=x[-tr_index, ])) 
} 

次に、あなたが望むように結果を割り当てることができます。例:ベクトルの

mtcars_split = train_data(mtcars) 

、関数は次のようになります。

train_data <- function(x, fraction=0.8){ 
    tr_index = sample(1:length(x), floor(length(x) * fraction))) 
    return(list(train=x[tr_index], test=x[-tr_index])) 
} 

そして、あなたはもちろん、ベクトルまたはデータフレームの入力のいずれかを処理するための機能を一般化することができます。

+0

非常に役に立ちます。私は '[-index]'を見る。私はリストからベクトルを抽出することができます。私はポストで言及することを忘れていました。大きな文字ベクトル、つまり '[index]'からサンプリングしています。ありがとう – Bhail

関連する問題