我在 4 个不同的位置有 4 个不同的 .csv 文件,我想使用相同的标准对它们进行子集化。然后我想为它们中的每一个以“originalfilename_cpt.csv”的形式编写输出(理想情况下到原始位置,但我已经放弃了——不介意将它们写入工作区并手动移动它们)
因为它们位于不同的位置,所以我从单独读取文件开始:
data1 <- read.csv("Subsets\\Folder1\\data1.csv")
data2 <- read.csv("Subsets\\Folder2\\data2.csv")
data3 <- read.csv("Subsets\\Folder3\\data3.csv")
data4 <- read.csv("Subsets\\Folder4\\data4.csv")
然后创建一个包含所有文件的列表:
mylist <- list(data1, data2, data3, data4)
从这里我尝试了 2 条路线 - 首先创建了一个函数并使用了 lapply:
MyFunction <- function(file){
clean.file <- file[(file$pingtimehrs < 3.334), ]
write.csv(clean.file, file=paste(file, "_cpt.csv", sep=""), row.names = F)
}
lapply(mylist, MyFunction)
第二个使用了 for 循环:
for (file in mylist){
clean.file <- file[(file$pingtimehrs < 3.334), ]
write.csv(clean.file, file=paste(file, "_cpt.csv", sep=""), row.names = F)
}
在这两种情况下我都会遇到相同的错误,我怀疑这与编写输出有关,因为我可以看到我的 clean.file 正在创建(至少是第一个)并且看起来正确。这是我得到的错误:
Error in file(file, ifelse(append, "a", "w")) :
invalid 'description' argument
In addition: Warning message:
In if (file == "") file <- stdout() else if (is.character(file)) { :
the condition has length > 1 and only the first element will be used
有人可以发现我做错了什么吗?