【问题标题】:Building a loop in R to write all rows into separate files, with one row per file在 R 中构建一个循环以将所有行写入单独的文件,每个文件一行
【发布时间】:2015-12-25 01:01:57
【问题描述】:

在这里,我正在查看 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 ?代码的其他部分是否需要进行其他替换?

编辑:缺少报价

【问题讨论】:

  • 如果您能告诉我代码的哪些部分涉及按列组织并讨论如何将它们更改为行,我认为这将非常有帮助。
  • 我不明白这句话我只是好奇,如果你把它改成将所有列写入单独的文件,你会怎么做?。这不是你已经在做的吗?
  • 我正在 R 中构建一个循环,将所有行写入单独的文件,每个文件一行。我上面的内容是为列执行此操作的循环。我在问如何使用类似的逻辑并修改行的代码。

标签: r for-loop while-loop statistics


【解决方案1】:

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

【讨论】:

  • 我的意思是问我如何对行执行此操作,因为我老实说卡在那里。
猜你喜欢
  • 2015-12-23
  • 1970-01-01
  • 2017-10-09
  • 2019-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-04
  • 1970-01-01
相关资源
最近更新 更多