如何检查多个R对象是否相同?

如何检查多个R对象是否相同?,r,R,假设我有一个列表对象,如: set.seed(123) df <- data.frame(x = rnorm(5), y = rbinom(5,2,0.5)) rownames(df) <- LETTERS[1:5] ls <- list(df1 = df, df2 = df, df3 = df) set.seed(123) df你可以试试 all(sapply(ls, rownames) == rownames(ls[[1]])) 要仅检查第i列的名称,可以将其修改为 a

假设我有一个列表对象,如:

set.seed(123)
df <- data.frame(x = rnorm(5), y = rbinom(5,2,0.5))
rownames(df) <- LETTERS[1:5]
ls <- list(df1 = df, df2 = df, df3 = df)
set.seed(123)
df你可以试试

all(sapply(ls, rownames) == rownames(ls[[1]]))
要仅检查第i列的名称,可以将其修改为

all(sapply(ls, rownames)[i, ] == rownames(ls[[1]])[i])
你可以试试

all(sapply(ls, rownames) == rownames(ls[[1]]))
要仅检查第i列的名称,可以将其修改为

all(sapply(ls, rownames)[i, ] == rownames(ls[[1]])[i])

您可以通过以下方式获得行名称列表:

Map(rownames, ls)
因此,您可以检查所有数据帧是否具有相同的行名,并检查row.names vector是否只有一个唯一值:

length(unique(Map(rownames, ls))) == 1

您可以通过以下方式获得行名称列表:

Map(rownames, ls)
因此,您可以检查所有数据帧是否具有相同的行名,并检查row.names vector是否只有一个唯一值:

length(unique(Map(rownames, ls))) == 1

谢谢@konvas。如何只检查行名或特定列而不是整个元素?这是我的问题。谢谢@konvas。如何只检查行名或特定列而不是整个元素?这就是我的问题。只是一个注释,
ls()
指的是base R中的一个函数。在这里小心地将其用作对象。只是一个注释,
ls()
指的是base R中的一个函数。在这里小心地将其用作对象