我有四个data frames
,其中一个类似的列名为";类型";。
df1 <- data.frame(Type = c('A','B','C','D','E','F'))
df2 <- data.frame(Type = c('A','B','C','D','E','F'))
df3 <- data.frame(Type = c('A','B','C','D','E','F'))
df4 <- data.frame(Type = c('A','Z','C','D','E','F'))
我想检查一下这个列在所有data frames
上是否相同。
目前,我正在使用以下方法一次检查两个数据帧:
as.integer(as.logical(identical(df1$Type, df2$Type)))
如果相同则为1,如果不相同则为0。
我想执行这样的单行:
as.integer(as.logical(identical(df1$Type, df2$Type, df3$Type, df4$Type)))
但是identical
一次只能处理两列。
我还发现了对R中多个相同列的测试,但这只适用于一个data frame
中的列。
您可以使用从数据帧中提取Type
列,并将任何一个元素与所有元素进行比较。
list_df <- mget(paste0('df', 1:4))
#Or manually creating a list
#list_df <- list(df1, df2, df3, df4)
tmp <- lapply(list_df, `[[`, 'Type')
all(sapply(tmp, function(x) all(x == tmp[[1]])))
#[1] FALSE