したがって、私の目標は、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?
}
}
write.csv(x= paste('group', i, sep=''), file= paste(endPath, '/group', i, '.csv', sep=''), row.names=FALSE
エラーが発生したり、探しているランダム化されたデータフレームのチャンクではなく、文字通り文字列「group1」をcsvに書き込んだりするなど、その場で何かをしようとすると(A) 。これは、本物のプログラミングの問題ではなく、Rのセマンティクスに直面しているように見えるため、非常に混乱しています..事前に助けてくれてありがとう。