所以,我的目标是编写一个函数,它将任何 csv 文件、输出路径和任意数量的拆分大小(按行数)作为输入,然后将数据随机化并拆分到适当的文件中。如果我提前知道拆分大小,我可以很容易地手动执行此操作,但我想要一个能够处理不同拆分大小的自动化函数。看起来很简单,这就是我写的:
randomizer = function(startFile, endPath, ...){ ##where ... are the user-defined split sizes
vec = unlist(list(...))
n_files = length(vec)
values = read.csv(startFile, stringsAsFactors = FALSE)
values_rand = as.data.frame(values[sample(nrow(values)),])
for(i in 1:n_files){
if(nrow(values_rand)!=0 & !is.null(nrow(values_rand))){
assign(paste('group', i , sep=''), values_rand[1:vec[i], ]);
values_rand = as.data.frame(values_rand[(vec[i]+1):nrow(values_rand), ], stringsAsFactors = FALSE)
## (A) write.csv fn here?
} else {
print("something went wrong")
}
}
## (B) write.csv fn here?
}
}
当我尝试在适当的位置 (A) 执行某些操作时,例如 write.csv(x= paste('group', i, sep=''), file= paste(endPath, '/group', i, '.csv', sep=''), row.names=FALSE
出现错误或将字符串“group1”直接写入 csv,而不是我正在寻找的随机数据帧的块。我非常困惑,因为这似乎是我遇到了 R 语义而不是真正的编程问题。在此先感谢您的帮助。