基于数据帧比较的列表R子集划分
我有一个包含一系列已加载文件的列表。我希望将此列表子集,以从与另一个数据帧中的值匹配的每个文件中获取结果 例如,使用以下测试代码:基于数据帧比较的列表R子集划分,r,list,merge,dataframe,R,List,Merge,Dataframe,我有一个包含一系列已加载文件的列表。我希望将此列表子集,以从与另一个数据帧中的值匹配的每个文件中获取结果 例如,使用以下测试代码: 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
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)
data.coords1类似于lappy(1:length(data.list),function(i)merge(data.list[[i]],ref,by.x=paste0(“data.coords”,i),by.y=“ref.coords”,sort=F))
可以吗?谢谢你的回答。它适用于示例代码,但我在使用真实数据时遇到了问题。我在fix.by(by.y,y)中得到了错误错误:'by'必须指定一个我正在调查的唯一有效列。没问题。因此,在实际数据中,没有像data.coords1
、data.coords2
、data.coords3
等变量,或者是by.y
对于列表中的所有数据集都不相同?是的,在我的实际数据中,每个列表元素中的列都是相同的。我花了一段时间才注意到出了什么问题,一定是累了。谢谢
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))
[[1]]
data.coords1 data.lett1 ref.mark ref.MARK
1 1 T a A
2 6 T f F
3 7 G g G
4 9 C i I
5 18 T r R
[[2]]
data.coords2 data.lett2 ref.mark ref.MARK
1 2 G b B
2 4 T d D
3 19 G s S
4 20 C t T
[[3]]
data.coords3 data.lett3 ref.mark ref.MARK
1 10 C j J
2 11 T k K
3 12 C l L
4 13 C m M
5 15 T o O
6 17 G q Q