按名称数据框与矩阵删除列

时间:2017-10-13 15:42:38

标签: r dataframe matrix

我想在矩阵中按名称删除列,我注意到它与数据框的工作方式不同:

df <- as.matrix(data.frame(x=1:5, y=2:6, z=3:7, u=4:8))

df[ , -which(names(df) %in% c("z","u"))]


df <- data.frame(x=1:5, y=2:6, z=3:7, u=4:8)

df[ , -which(names(df) %in% c("z","u"))]

为什么以及如何解决此问题?

1 个答案:

答案 0 :(得分:1)

使用矩阵,您可以使用colnamesrownames(或者,如果您需要推广到具有更多维度的数组,dimnames列表)。

names没有为矩阵定义。它是为list定义的,因此对于data.frame,其中列通常更重要(在某种意义上,至少),所以这是一个安全的约定names指的是列名。但是在一个数组中,没有理由偏爱一个维度。

类似的问题是Extract matrix column values by matrix column name