我有 2 个数据框列表。我想创建一个返回 DF2 索引向量的函数,其中索引是重复的数据帧。我需要将列表 2 中的每个 df 与列表 1 中的每个 df 进行比较。此代码还需要在等长列表上工作,其中列表 1 可能比列表 2 长。
例如,
library(tidyverse)
x <- mtcars %>% split(.$cyl)
y <- x[1:2]
y[[3]] <- mtcars[1:5,1:6]
x[[4]] <- x[[1]]
x[[5]] <- x[[2]]
identical(x[[1]],y[[1]]) #returns true
identical(x[[3]], y[[1]]) #returns false
length(x) #returns 5
length(y) #returns 3
伪代码:
comparelists <- function(x,y) {some code}
q <- mapply(compareLists, x, y)
q #returns 1,2
我相信我需要多个相同的语句,但很难想出有效的逻辑来检查列表 2 中的每个数据帧与列表 1 中的每个数据帧,以便将 list2[[[1]] 与 list1[ 进行比较[1:5]] 和 list2[[2]] 与 list1[[1:5]] 进行比较,依此类推...
最佳答案
如果我们需要对每一对执行此操作,请使用
lapply(x, function(u) sapply(y, identical, u))
或与外部
outer(x, y, FUN = Vectorize(identical))
关于r - 比较不等长度的数据帧列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66264375/