我正在使用sapply(tk_choose.files)
生成一个交互式窗口,我可以在其中选择要导入的.csv文件(多个)。然后我做一些基本的数据操作,以便可以使用ggplot绘制一个特定列的平均值。
到目前为止,我的代码看起来像这样:
>tfiles <- data.frame(sapply(sapply(tk_choose.files(caption="Choose T files
(hold CTRL to select multiple files)"), read.table, header=TRUE, sep=","), c))
>rfiles <- data.frame(sapply(sapply(tk_choose.files(caption="Choose R files
(hold CTRL to select multiple files)"), read.table, header=TRUE, sep=","), c))
然后我计算了tfiles
和rfiles
的特定列的平均值,以便我可以绘制100-tfiles-rfiles
。
虽然这对一组数据工作正常,但我现在要导入更多数据集,最好也使用sapply(tk_choose.files)
。基本上我需要获得t/rfiles1
,t/rfiles2
...并在此之后重复数据处理过程,以便我可以得到多组数据的图。我不知道怎么做而不必复制和粘贴我的代码!
很抱歉,如果这是一个愚蠢的问题,我对R很新,所以我真的被卡住了,非常感谢你的帮助!
答案 0 :(得分:0)
假设工作目录中的文件如下:
all.files<-list.files(pattern="\\.csv")
all.files
[1] "R01.csv" "R02.csv" "R03.csv" "R04.csv" "T01.csv" "T02.csv" "T03.csv" "T04.csv"
你希望将tfiles1称为T01和T02的合并数据; tfiles2作为T03和T04的合并数据
T <- grep("T", all.files, value=T)
T
[1] "T01.csv" "T02.csv" "T03.csv" "T04.csv"
t.list <- list(T[1:2], T[3:4])
all.T <- lapply(t.list, function(x)ldply(x, read.csv))
for (i in 1:length(all.T)) assign(paste0("tfiles", i), all.T[[i]]) #this will produce tfiles1 and tfiles2 in your R environment.