2017-01-25 21 views
0

を返すために、私は9つのデータフレームを返すために、以下の機能を持っている:Rの関数を複数のデータフレームに

split_data <- function(dataset, train_perc = 0.6, cv_perc = 0.2, test_perc = 0.2) 

{ 

m <- nrow(dataset) 
n <- ncol(dataset) 

#Sort the data randomly 
data_perm <- dataset[sample(m),] 

#Split data into training, CV, and test sets 
train <- data_perm[1:round(train_perc*m),] 
cv <- data_perm[(round(train_perc*m)+1):round((train_perc+cv_perc)*m),] 
test <- data_perm[(round((train_perc+cv_perc)*m)+1):round((train_perc+cv_perc+test_perc)*m),] 

#Split sets into X and Y 
X_train <- train[c(1:(n-1))] 
Y_train <- train[c(n)] 

X_cv <- cv[c(1:(n-1))] 
Y_cv <- cv[c(n)] 

X_test <- test[c(1:(n-1))] 
Y_test <- test[c(n)] 

} 

私のコードは正常に動作しますが、何のデータフレームが作成されません。これを行う方法はありますか?おかげ

+0

関数は何も返しません – Cath

+0

関数が複数のデータフレームを返すことは可能ですか? – Ben

+1

はい、リストに入れることができます: 'return(list(df1、df2、...))'(好きな方に名前を付けることができます) – Cath

答えて

1

は、このあなたがデータフレームは、最後にワークスペースに作成する場合は、これはあなたがする必要がありますものですlist

split_data <- function(dataset, train_perc = 0.6, cv_perc = 0.2, test_perc = 0.2) { 

    m <- nrow(dataset) 
    n <- ncol(dataset) 

    #Sort the data randomly 
    data_perm <- dataset[sample(m),] 

    # list to store all data.frames 
    out <- list() 

    #Split data into training, CV, and test sets 
    out$train <- data_perm[1:round(train_perc*m),] 
    out$cv <- data_perm[(round(train_perc*m)+1):round((train_perc+cv_perc)*m),] 
    out$test <- data_perm[(round((train_perc+cv_perc)*m)+1):round((train_perc+cv_perc+test_perc)*m),] 

    #Split sets into X and Y 
    out$X_train <- train[c(1:(n-1))] 
    out$Y_train <- train[c(n)] 

    out$X_cv <- cv[c(1:(n-1))] 
    out$Y_cv <- cv[c(n)] 

    out$X_test <- test[c(1:(n-1))] 
    out$Y_test <- test[c(n)] 

    return(out) 

} 
+0

ありがとう、必要な – Ben

1

で9 data.framesを格納します: -

1) Create empty variable (which may equal out to NULL i.e. Y_test = NULL) in your R console. 
2) Assign "<<-" operator to the same variables created in Step 1 inside your function i.e. 

X_train <<- train[c(1:(n-1))] 
Y_train <<- train[c(n)] 

X_cv <<- cv[c(1:(n-1))] 
Y_cv <<- cv[c(n)] 

X_test <<- test[c(1:(n-1))] 
Y_test <<- test[c(n)] 

これにより、ワークスペースから新しく作成されたデータにアクセスできるようになります。

関連する問題