簡體   English   中英

R函數返回多個數據幀

[英]R function to return multiple data frames

我具有以下功能來返回9個數據幀:

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)]

}

我的代碼運行良好,但是沒有創建數據框。 有沒有辦法做到這一點? 謝謝

如果希望最后在工作空間中創建數據框,則需要執行以下操作:-

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)]

這將使您能夠從工作空間訪問新創建的數據。

這會將九個data.frames存儲在一個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)

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM