繁体   English   中英

通过列名从矩阵中提取多列

[英]Extract multiple columns from matrix by column-name

我有一个matrix格式的df ,里面的所有值都是numeric (或NA )。
df的示例如下所示:

> dput(df)
structure(c(0, 1, 2, 3, 1, 2, 3, 4, 19.92053183, 19.94818362, 
19.97583542, 20.00348721, -0.846185488, -0.870922179, -0.895658869, 
-0.92039556, 56, 56, 56, 56, NA, 0.529513867, 0.477141211, 0.441261572, 
NA, NA, 32, 32), .Dim = c(4L, 7L), .Dimnames = list(c("A", "B", 
"C", "D"), c("A", "B", "C", "D", "E", "F", "G")))

我想通过按名称选择所有行和特定列来从df创建一个新矩阵df_new

我试过了:

  1. df_new = df[,c("A":"C","E","F":"G")]
  2. df_new = select(df,"A":"C","E","F":"G")
  3. df_new = select(df,c("A":"C","E","F":"G"))

对于第一个代码,我得到:

Error in "A":"C" : NA/NaN argument
In addition: Warning messages:
1: NAs introduced by coercion 
2: NAs introduced by coercion

对于第二和第三段代码,我得到:

Error in UseMethod("select_") : 
  no applicable method for 'select_' applied to an object of class "c('matrix', 'double', 'numeric')"

结果应如下所示:

>df_new = df[,c("A":"C","E","F":"G")]
>df_new
 A B C E F G
A 1 NA 5 9 11 13
B 2 4 6 10 12 NA
C NA 5 NA NA 14
D 15 5 16 18 19

我认为我的错误有点像错字,但我没有发现。 提前致谢!

dplyr::selectdplyr::select适用于框架,而不适用于矩阵。 幸运的是, subset具有S3方法subset.matrix

subset(df, TRUE, c(A:C, E))
#   A B        C  E
# A 0 1 19.92053 56
# B 1 2 19.94818 56
# C 2 3 19.97584 56
# D 3 4 20.00349 56

另外,您也可以“减去”列。

subset(df, TRUE, -D)
#   A B        C  E         F  G
# A 0 1 19.92053 56        NA NA
# B 1 2 19.94818 56 0.5295139 NA
# C 2 3 19.97584 56 0.4771412 32
# D 3 4 20.00349 56 0.4412616 32

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM