【发布时间】:2015-08-31 10:10:35
【问题描述】:
我有一个包含一系列加载文件的列表。我希望对这个列表进行子集化,以从每个文件中获取与另一个数据框中的值匹配的结果。
例如下面的测试代码:
data.coords1 <- c(1,6,7,9,18)
data.lett1 <- c("T","T","G","C","T")
data1 <- cbind(data.coords1, data.lett1)
data.coords2 <- c(2,4,19,20)
data.lett2 <- c("G","T","G","C")
data2 <- cbind(data.coords2, data.lett2)
data.coords3 <- c(10,11,12,13,15,17)
data.lett3 <- c("C","T","C","C","T","G")
data3 <- cbind(data.coords3, data.lett3)
data.list <- list(data1, data2, data3)
ref.coords <- c(1:20)
ref.mark <- letters[1:20]
ref.MARK <- LETTERS[1:20]
ref <- cbind(ref.coords, ref.mark, ref.MARK)
我可以通过以下方式获得我想要的(对于一个列表元素):
desired.data <- merge(data2,ref, by.x="data.coords1",
by.y="ref.coords", sort=F)
但是我怎样才能轻松地为整个列表做到这一点呢?
【问题讨论】:
-
像
lapply(1:length(data.list), function(i) merge(data.list[[i]],ref, by.x=paste0("data.coords",i), by.y="ref.coords", sort=F))这样的东西可以吗?