【问题标题】:R: Renaming when using model.matrixR:使用 model.matrix 时重命名
【发布时间】:2016-03-21 10:59:14
【问题描述】:

运行以下 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”添加到变量名称中。我怎样才能避免这种行为(或在非常一般的设置中重命名它,例如在具有用户提供公式的函数中)?

【问题讨论】:

  • 如果我没记错的话,“B”是从model.matrix 中使用的对象中提取的,所以我想你可以使用该信息来gsub 如果它是一个函数....?

标签: r variable-names model.matrix


【解决方案1】:

我们可以使用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"      

【讨论】:

  • 如果将对象“B”命名为“akrun”,则生成的列名称将是“akrunx1”和“akrunx2”。我认为这可以变得更具可扩展性。
  • 非常感谢您的回复。计划通过 A
猜你喜欢
  • 1970-01-01
  • 2012-12-08
  • 2018-09-21
  • 1970-01-01
  • 2016-02-14
  • 1970-01-01
  • 2022-08-08
  • 2021-03-01
  • 1970-01-01
相关资源
最近更新 更多