【问题标题】:How to select the same rows from list of data frames?如何从数据框列表中选择相同的行?
【发布时间】:2020-03-11 19:50:43
【问题描述】:

我有一个由两个具有相同维度的数据框组成的列表。我想从中选择相同的特定行。

df1 = data.frame(A = 1:5, B = 6:10)
df2 = data.frame(A = 11:15, B = 16:20)

ls = list(df1, df2)

idx = sample(1:5, size = 3)

# code below doesn't work
train = ls[][idx, ]
test = ls[][-idx, ]

现在我收到这些错误:

ls[][idx, ] 中的错误:维数不正确

ls[][-idx, ] 中的错误:维数不正确

【问题讨论】:

    标签: r


    【解决方案1】:

    因为它是list,我们可以使用lapply 来循环列表。如果我们不想要匿名函数,则在末尾指定,,否则默认将其作为列索引

    lapply(ls, `[`, idx,)
    lapply(ls, `[`, -idx,)
    

    带 lambda/匿名函数

    lapply(ls, function(x) x[idx, ])
    lapply(ls, function(x) x[-idx,])
    

    ls是函数名,所以最好不要用函数名来命名对象

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多