我有一个包含许多数据框的列表:
df1 <- data.frame(A = 1:5, B = 2:6, C = LETTERS[1:5])
df2 <- data.frame(A = 1:5, B = 2:6, C = LETTERS[1:5])
df3 <- data.frame(A = 1:5, C = LETTERS[1:5])
my_list <- list(df1, df2, df3)
我想知道此列表中的每个数据框是否包含相同的列(即,相同数量的列,所有列都具有相同的名称和相同的顺序)。
我知道您可以使用 lapply
轻松找到列表中数据框的列名:
lapply(my_list, colnames)
有没有办法确定列名是否存在差异?我意识到这是一个涉及成对比较的复杂问题。
最佳答案
您可以通过简单地检查每个列名的计数是否为 == length(my_list)
来避免成对比较。这将同时检查数据框的 dim
和 names
-
lapply(my_list, names) %>%
unlist() %>%
table() %>%
all(. == length(my_list))
[1] FALSE
在基础 R 中,即没有 %>%
-
all(table(unlist(lapply(my_list, names))) == length(my_list))
[1] FALSE
或明显更优化-
!any(table(unlist(lapply(my_list, names))) != length(my_list))
关于r - 有没有一种简单的方法可以判断存储在一个列表中的许多数据框是否包含相同的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56821533/