R:使用 model.matrix 时重命名
R: Renaming when using model.matrix
当运行以下R代码时:
y <- rnorm(100)
B <- matrix(rnorm(200), ncol=2)
colnames(B) <- c("x1", "x2")
A <- model.matrix(y~B)
colnames(A)
model.matrix 将矩阵 A 中的前缀 "B" 添加到变量名称中。如何避免这种行为(或重命名它,但在非常一般的设置中,例如在具有用户的函数中提供的公式)?
我们可以使用 sub
删除列名中的第一个字符。
colnames(A)[-1] <- sub("^.", "", colnames(A)[-1])
或者通过与 'B'
中的列名连接来设置列名
colnames(A) <- c(colnames(A)[1], colnames(B))
不使用 sub
的另一种选择是使用 'y' 和 'B' 矩阵创建 data.frame,然后使用 y ~.
A <- model.matrix(y~., data=data.frame(y, B))
colnames(A)
#[1] "(Intercept)" "x1" "x2"
当运行以下R代码时:
y <- rnorm(100)
B <- matrix(rnorm(200), ncol=2)
colnames(B) <- c("x1", "x2")
A <- model.matrix(y~B)
colnames(A)
model.matrix 将矩阵 A 中的前缀 "B" 添加到变量名称中。如何避免这种行为(或重命名它,但在非常一般的设置中,例如在具有用户的函数中提供的公式)?
我们可以使用 sub
删除列名中的第一个字符。
colnames(A)[-1] <- sub("^.", "", colnames(A)[-1])
或者通过与 'B'
中的列名连接来设置列名colnames(A) <- c(colnames(A)[1], colnames(B))
不使用 sub
的另一种选择是使用 'y' 和 'B' 矩阵创建 data.frame,然后使用 y ~.
A <- model.matrix(y~., data=data.frame(y, B))
colnames(A)
#[1] "(Intercept)" "x1" "x2"