重复tk_choose.files多次导入多个.csv文件

时间:2016-05-25 06:40:47

标签: r

我正在使用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))

然后我计算了tfilesrfiles的特定列的平均值,以便我可以绘制100-tfiles-rfiles

虽然这对一组数据工作正常,但我现在要导入更多数据集,最好也使用sapply(tk_choose.files)。基本上我需要获得t/rfiles1t/rfiles2 ...并在此之后重复数据处理过程,以便我可以得到多组数据的图。我不知道怎么做而不必复制和粘贴我的代码!

很抱歉,如果这是一个愚蠢的问题,我对R很新,所以我真的被卡住了,非常感谢你的帮助!

1 个答案:

答案 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.