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

时间:2015-09-27 19:25:51

标签: r for-loop while-loop statistics

在这里,我正在查看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],但我很好奇你可以用什么代替我?是否需要在代码的其他部分进行其他替换?

编辑:缺少引用

1 个答案:

答案 0 :(得分:2)

您的代码已将每列写入单独的文件中。你想复制整个表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") )