0

我有多个这种类型的文件(相同的列数,不同的行)

A     1      1   1   43.50   12.50   
A     1      1   5   44.50   12.50   
A     1      1   9   44.50   12.50   
A     1      1   13      45.50   12.50   
A     1      1   17      45.50   12.50  
A     1      1   21      46.50   12.50   
A     1      2   1   47.50   12.50   
A     1      2   5   47.50   12.50   
A     1      2   9   48.50   12.50 

我想打开所有这些文件并为最后两列中的每一个绘图。我设法使用打开它们lapply

myfiles <- list.files(pattern="*.dat")
myfilesContent <- lapply(myfiles, read.table, header=T, sep = "\t")

但后来我是堆栈..

非常感谢!

4

1 回答 1

2

您已经使用过一次 lapply - 为什么不使用两次呢?

阅读您的描述,我猜您不确定 data.frames 的大小,因此需要识别要自动绘制的最后两列并将它们交给您的绘图功能。

我会使用以下解决方案:

> myfiles <- lapply(list.files(pattern = "*.dat"),
+   read.table, header = TRUE, sep = "\t"
+ )

> # No check whether dim() will work correctly with your data!
> listplot <- function(x) {
>   col1 <- dim(x)[2] - 1
>   col2 <- dim(x)[2]
>   plot(x[,col1], x[,col2], type = "p")
> }

> lapply(myfiles, listplot)

这将一次性完成所有情节;进一步的参数plot以及任何其他内容(例如保存图像)将进入 listplot 函数。

于 2013-09-16T14:37:37.810 回答