我想在矩阵中按名称删除列,我注意到它与数据框的工作方式不同:
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"))]
为什么以及如何解决此问题?
答案 0 :(得分:1)
使用矩阵,您可以使用colnames
或rownames
(或者,如果您需要推广到具有更多维度的数组,dimnames
列表)。
names
没有为矩阵定义。它是为list
定义的,因此对于data.frame
,其中列通常更重要(在某种意义上,至少),所以这是一个安全的约定names
指的是列名。但是在一个数组中,没有理由偏爱一个维度。