我有一个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
。
我试过了:
df_new = df[,c("A":"C","E","F":"G")]
df_new = select(df,"A":"C","E","F":"G")
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
我想我的错误类似于一个小的打字错误,但我没有找到它。提前感谢!
发布于 2019-07-11 03:22:02
首先:dplyr::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
https://stackoverflow.com/questions/56976422
复制相似问题