【发布时间】:2017-10-13 15:42:38
【问题描述】:
我想按名称删除矩阵中的列,我注意到它与数据框的工作方式不同:
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"))]
为什么以及如何解决这个问题?
【问题讨论】:
-
当你有一个矩阵时使用
colnames而不是names -
为什么会有这种差异?
-
因为矩阵和数据框不同。列在矩阵中并不像在数据框中那样特殊。
colnames对两者都有效。 -
data.frame本质上是list,在 R 中具有矩阵的属性。你不能期望矩阵的每个方法都与data.frame相同。