在R中构建一个循环,将所有行写入单独的文件,每个文件一行



这里,我正在查看r中的文件mtcars。这是一个循环,可用于将列写入11个单独的文件,因为数据集中有11列。

for(i in (1:length(mtcars[1, ])))
write.table(mtcars[i], file=paste("mtcars", as.character(i), ".txt", 
sep=""), row.names=FALSE, sep="t");

我很好奇,如果你要把所有的列都写进单独的文件里,你会怎么做呢?现在,我知道要做的一个修改是将第一个行长度参数设置为mtcars[,1],但我很好奇可以用什么来代替I ?在代码的其他部分是否需要进行其他替换?

编辑:缺少引用

您的代码已经将每个列写入一个单独的文件中。你想把整个表复制11次吗?在这种情况下,只有write.table(mtcars, ...

编辑:试试这个:

for(i in 1:nrow(mtcars)
write.table(mtcars[i,], file=paste("matchers", as.character(i), ".txt", 
sep=""), row.names=FALSE, sep="t")

或不带for循环:

sapply(mtcars, 1:nrow(mtcars), function(i) 
  write.table(mtcars[i,], 
              file=paste0("matchers", i, ".txt"),
              row.names=FALSE, sep="t") )

library(dplyr)
mtcars %>%
  mutate(index = 1:n() )
  rowwise %>%
  do(write.table(., 
                 file=paste0("matchers", .$index, ".txt"),
                 row.names=FALSE, sep="t") )

最新更新