【问题标题】:How to check identical for multiple R objects?如何检查多个 R 对象是否相同?
【发布时间】:2015-09-25 13:00:06
【问题描述】:

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

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)

我的问题是如何快速检查ls 中三个元素(数据框)的行名是否相同。

【问题讨论】:

  • 请注意,ls() 指的是基础 R 中的一个函数。此处小心将其用作对象

标签: r


【解决方案1】:

你可以试试

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

要仅检查第 i 列的名称,可以将其修改为

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

【讨论】:

  • 谢谢@konvas。如何只检查行名或某些列而不是整个元素?这是我的问题。
【解决方案2】:

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

Map(rownames, ls)

因此您可以检查所有数据框是否具有相同的行名,检查是否只有一个唯一的 row.names 向量值:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    • 2020-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-27
    相关资源
    最近更新 更多