我有多个这种类型的文件(相同数量的列,不同的行)
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")
然后我就堆叠了..
非常感谢!
答案 0 :(得分: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函数。