【问题标题】:creating .txt file in R在 R 中创建 .txt 文件
【发布时间】:2015-12-06 18:10:27
【问题描述】:
for (i in 3:52){
cat(" ID,NAME,LAT,LONG,ELEVATION
1,25_i_PCP,39.269,-92.127,261.000
2,32_i_PCP,39.241,-92.160,263.000
3,34_i_PCP,39.223,-92.141,264.000
4,38_i_PCP,39.298,-92.083,243.000
5,201_i_PCP,39.228,-92.119,263.000
    ",file="pcpfork_i.txt",sep="\n",append=TRUE)}"

我想使用 for 循环创建 50 个不同的 .txt 文件,方法是将 i 从 3 替换为 52。

【问题讨论】:

  • 使用file=paste0("pcpfork_",i,".txt")。您的文件是 50 而不是 49。
  • 谢谢我也想为每个 i 替换 .txt 文件中的 i

标签: r export-to-csv


【解决方案1】:

这里有几个选项。首先,请注意。在调用cat() 时不需要append = TRUEsep = "\n",因为没有任何东西可以附加或分离。这些都在单独的文件中。

选项 1: 在您的文本中,您可以将 i 替换为 %d,将其命名为 tmp,然后使用 sprintf() 在循环中运行它。

tmp <- "ID,NAME,LAT,LONG,ELEVATION
1,25_%d_PCP,39.269,-92.127,261.000
2,32_%d_PCP,39.241,-92.160,263.000
3,34_%d_PCP,39.223,-92.141,264.000
4,38_%d_PCP,39.298,-92.083,243.000
5,201_%d_PCP,39.228,-92.119,263.000"

for (i in 3:52) {
    cat(
        do.call(sprintf, c(tmp, as.list(rep(i, 5)))), 
        file = sprintf("pcpfork_%d.txt", i)
    )
}

选项 2: 保留原始文本并使用 gsub() 替换。

tmp <- "ID,NAME,LAT,LONG,ELEVATION
1,25_i_PCP,39.269,-92.127,261.000
2,32_i_PCP,39.241,-92.160,263.000
3,34_i_PCP,39.223,-92.141,264.000
4,38_i_PCP,39.298,-92.083,243.000
5,201_i_PCP,39.228,-92.119,263.000"

for (i in 3:52) {
    cat(
        gsub("_i_", paste0("_", i, "_"), tmp, fixed = TRUE),
        file = sprintf("pcpfork_%d.txt", i)
    )
}

这些应该会让你朝着正确的方向前进。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-03
    • 1970-01-01
    • 2013-09-02
    • 2013-01-31
    • 1970-01-01
    • 2020-02-16
    • 2021-05-10
    相关资源
    最近更新 更多