如何检查多个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中的一个函数。在这里小心地将其用作对象