5

我想使用 write.csv 语句将输出定向到文件。我想编写 16 个不同的输出文件,每个文件都用扩展名 1 到 16 标记。

现在写的例子:

    trackfilenums=1:16
    for (i in trackfilenums){
       calculations etc
       write.csv(max.hsi, 'Severity_Index.csv', row.names=F)
    }

我希望将输出 csv 文件标记为“Severity_Index_1.csv”、“Severity_Index_2.csv”等。不知道如何在 R 语言中执行此操作。

谢谢!金佰利

4

3 回答 3

12

您将需要使用粘贴命令:

write.csv(max.hsi, paste0("Severity_Index_", i,".csv"), row.names=F)
于 2013-09-19T19:07:02.620 回答
1

有些人喜欢使用 Name_01 Name_02 等文件名而不是 Name_1 Name_2 等。例如,这可能会使字母顺序更合理:使用某些软件,否则 10 会在 1 之后,20 会在 2 之后,等等。

这种编号可以用 sprintf 来实现:

sprintf("Severity_Index_%02d.csv", 7)

有趣的部分是%02d——这表示它i是一个整数值(实际上也可以使用 %02i),它将占据至少 2 个位置,如果需要,将使用前导零。

# try also
sprintf("Severity_Index_%03d.csv", 7)
sprintf("Severity_Index_%2d.csv", 7)
于 2013-09-19T19:37:26.427 回答
0

要在此处添加其他答案,我发现清理pasted字符串以确保文件系统可以正常使用也是一个好主意。为此,我有以下功能:

fsSafe <- function(string) {
 safeString <- gsub("[^[:alnum:]]", "_", string)
 safeString <- gsub("_+", "_", safeString)
 safeString
}

这只是去除所有非字母和非数字字符并用下划线替换它们。

于 2013-09-20T02:49:50.630 回答