r - 在函数内部创建训练和测试 df
问题描述
我对 R 还是很陌生,并且在设置一个可以重复调用不同种子值的函数时遇到了一些困难(我最终想为 5 个随机种子调用 5 次)。我所做的就是将一个 df 分成 2 个 df。函数中的代码独立工作,但是当我将它放在一个函数中以使用 set_data(n) 调用它时,代码运行,但没有返回任何内容。我认为问题在于该函数似乎不知道要返回什么。我尝试过 return(df_train) 和 return(df_test),但这种努力没有成功。
df_n 是我想分成 df_train 和 df_test dfs 的规范化数据帧。我想知道函数中是否可以访问 df_n,或者我需要以某种方式将 df_n 传递给函数???
set_data <- function(n){
set.seed(n)
train_percent = 0.6667
sample_size <- floor(train_percent * nrow(df_n))
train_ind <- sample(seq_len(nrow(df_n)), size = sample_size)
df_train <- df_n[train_ind,]
df_test <- df_n[-train_ind,]
}
n=1
set_data(1)
任何关于如何返回两个数据帧以便我可以在此函数之外使用它们的想法将不胜感激。
凯文
解决方案
您可以将两个返回值放在一个列表中并返回它。我还将 data.frame 包含在函数调用中。然后你可以输入任何data.frame。
df_n <- data.frame(
x = runif(100,1,100)
)
set_data <- function(df_n, n){
set.seed(n)
train_percent = 0.6667
sample_size <- floor(train_percent * nrow(df_n))
train_ind <- sample(seq_len(nrow(df_n)), size = sample_size)
df_train <- df_n[train_ind,]
df_test <- df_n[-train_ind,]
return(list(df_train=df_train, df_test=df_test))
}
n=1
result <- set_data(df_n, n)
result$df_train
result$df_test
如果要将 df_train 和 df_test 分配给全局环境,则应将这些行更改为下面的代码。但不建议这样做,您应该尽可能避免它。
df_train <<- df_n[train_ind,]
df_test <<- df_n[-train_ind,]
推荐阅读
- xcode - Firebase Crashlytics - 是否安装正确?
- python - Python:将索引范围增加 1
- java - 很难找到时间复杂度
- itext - itextsharp 提取的签名图片崩溃
- python-3.x - swagger/flask:如何用破折号处理查询参数
- git - Git在关闭后被删除
- c++ - 引入参数化构造函数后显示 LNK 2019 未解析的外部符号的代码错误
- jquery - 根据表单上一个选项卡上的选择隐藏表单字段
- amazon-web-services - 如何获取 RDS 只读副本的凭据?
- android - ProgressBar 进度未与 Firestore 进度值一起上传。(安卓)