我构建了以下 R 脚本以获取由自动报告生成的 .csv 并将其拆分为多个 .csv 文件。
此代码完美运行,并为“todays_data.csv”中“设施”的每个唯一值输出一个 .csv 文件:
disps <- read.csv("/Users/me/Downloads/todays_data.csv", header = TRUE, sep=",")
for (facility in levels(disps$Facility)) {
temp <- subset(disps, disps$Facility == facility & disps$Alert.End == "")
temp <- temp[order(temp$Unit, temp$Area),]
fn <- paste("/Users/me/Documents/information/", facility, "_todays_data.csv", sep = "")
write.csv(temp, fn, row.names=FALSE)
}
但这不会输出任何东西:
args <- commandArgs(trailingOnly = TRUE)
file <- args[1]
disps <- read.csv(file, header = TRUE, sep=",")
for (facility in levels(disps$Facility)) {
temp <- subset(disps, disps$Facility == facility & disps$Alert.End == "")
temp <- temp[order(temp$Unit, temp$Area),]
fn <- paste("/Users/me/Documents/information/", facility, "_todays_data.csv", sep = "")
write.csv(temp, fn, row.names=FALSE)
}
这两个文件之间的唯一区别是第一个硬编码要拆分的 .csv 文件的路径,而第二个文件使用 Rscript 在命令行中将其作为参数传递。
read.csv() 命令适用于传递的文件路径,因为我可以在通过 Rscript 运行脚本时成功运行诸如 head(disps) 之类的命令。
当通过 Rscript 运行时,for 循环中的任何内容都不会执行,但它之前和之后的东西会。
有没有人知道我错过了什么?谢谢你。