【发布时间】:2016-04-04 08:59:01
【问题描述】:
假设我有这样的文件,
cat("TRIAL\nTRIAL\nblah\nVARIABLE,X1,X2\nA,1,2\n", file="myfile1.csv")
cat("blah\nVARIABLE\nTRIAL,A1,A2\nA,1,2\n", file="myfile2.csv")
cat("blah\nblah\nVARIABLE\nTRIAL,Z1,Z2\nA,1,2\n", file="myfile3.csv")
flist<-list.files(pattern = "myfile.*.csv")
[1] "myfile1.csv" "myfile2.csv" "myfile3.csv"
我使用fread 和!grep 读取这些文件,其中包含一些字符串“TRIAL”
result <- lapply(flist,function(x)fread(paste("grep -v TRIAL",x),header = FALSE)[,FNAME:=x])
那么如果我尝试像这样写这些文件"myfile1_new.csv" "myfile2_new.csv" "myfile3_new.csv" ;
lapply(result,function(x) write.table(x,file = gsub("(.*)(\\..*)", "\\1_new\\2", flist),row.names = FALSE,col.names = TRUE))
文件中的错误(文件,ifelse(追加,“a”,“w”)):无效 'description' 参数另外:警告消息:在 if (file == "") file 1 并且只使用第一个元素
我知道result 是一个列表
str(result) List of 3,但我收到了类似上面的错误。
此外,我如何在同一 lapply 循环内组合 fread 和 write.table?
问候
【问题讨论】:
-
result的内容是什么?它可能是一个列表,但它是您期望的对象列表(即可写)吗? -
@steveb 请重现该示例。您将看到结果的内部。
-
gsub("(.*)(\\..*)", "\\1_new\\2", flist) 当 write.table 需要单个字符时是长度为 3 的向量矢量...也许 lapply(1:length(result), function(n) write.table(result[[n]], file = gsub("(.*)(\\..*)", "\\ 1_new\\2", flist)[n],row.names = FALSE,col.names = TRUE))
-
@chinsoon12 你不希望
flist也被n索引(即flist[n])吗? -
@Alexander 我在你的帖子中遗漏了一些东西,我能够重现这个问题。
标签: r data.table lapply fread