【问题标题】:How do I delete multiple rows simultaneously from list by row names in R? [duplicate]如何从R中的行名列表中同时删除多行? [复制]
【发布时间】:2020-02-21 04:02:55
【问题描述】:

我有一个包含 100 个矩阵的列表,我需要在列表的每个矩阵中删除多行。

[[99]]
               x         y         z
 [1,]  40.614014 -0.419043  2.358242
 [2,]  40.750373  0.060505 -2.043480
 [3,]  26.927057 -6.738943  0.920763
 [4,]  27.508456  6.472744  0.625628
 [5,] -35.356189 -9.982903  2.070342
 [6,]         NA        NA        NA
 [7,]  14.443243 -7.074174  1.263049
 [8,]   1.972223 -7.739286  1.546097
 [9,] -10.520837 -8.039801  1.702196
[10,] -22.998039 -8.577798  1.804459
[11,]         NA        NA        NA
[12,] -19.796859  0.134456 -3.754037
[13,]         NA        NA        NA
[14,]         NA        NA        NA
[15,]         NA        NA        NA
[16,]         NA        NA        NA
[17,]   5.715001  0.014768 -5.151677
[18,]  -0.223313 -3.261829 -4.483909
[19,]  -6.794073 -0.090648 -5.349939
[20,]  -0.176161  3.251524 -5.227120
[21,]         NA        NA        NA
[22,]         NA        NA        NA
[23,]         NA        NA        NA
[24,]         NA        NA        NA
[25,]  29.436459  0.077276 -3.853158
[26,]  17.757341  0.162857 -4.573970
[27,] -14.035571 -0.022803 -5.535868
[28,]  14.443242  7.245918  1.263049
[29,]  14.443244  0.000001  5.730853
[30,]  14.443245 -0.000001 -4.752353
[31,] -29.435556 -5.619648  0.549797

例如,我想删除除第 3、5、7、8、9、10 行之外的所有行。

我试过这个:

lapply(lst, `[`, -11,)

但无法让它一次执行多行,并且考虑到它每次都会更改行名,因此每次都应用它以结束我想要保留的行会让人感到困惑。

我为数据框找到了这个:

myData[-c(2, 4, 6), ]

列表有什么类似的吗?

另外,是否可以删除列表中包含单个 NA 的所有矩阵?一旦我将矩阵减少到我想要的行,我需要消除所有缺失数据的矩阵。

感谢大家的帮助!

【问题讨论】:

  • 使用匿名函数lapply(lst, function(x) x[-c(2, 4, 6),])
  • @M--,我同意。我咨询了那个,并在我的问题中使用了答案,但我对基本语法的困惑让我要求更多澄清。
  • 欢迎来到 SO。不用担心。我们只是进行一些节制以保持社区的可访问性。希望见到你,可能很快就会回答问题。干杯。

标签: r list


【解决方案1】:

最后我们需要一个,

out1 <- lapply(lst, `[`, -c(2, 4, 6), )

或者更清楚一点,匿名函数会更好

out2 <- lapply(lst, function(x) x[-c(2, 4, 6),])

identical(out1, out2)
#[1] TRUE

数据

set.seed(24)
lst <- list(matrix(rnorm(30), 6, 5), matrix(rnorm(30), 6, 5))

【讨论】:

    猜你喜欢
    • 2020-07-11
    • 2012-07-03
    • 1970-01-01
    • 2020-10-17
    • 1970-01-01
    • 1970-01-01
    • 2021-10-09
    • 2020-06-20
    • 2014-06-25
    相关资源
    最近更新 更多