【问题标题】:In R: How to name a vector so that the name shows up when using lm()在 R 中:如何命名向量以便在使用 lm() 时显示名称
【发布时间】:2013-09-25 15:39:51
【问题描述】:

在R中,如何更改向量的名称,以便在使用lm时显示向量名称?它似乎适用于矩阵,但不适用于向量。

实际上,我希望代码检查向量在哪里等于一,并使用此信息来命名变量。

这是一个使用矩阵的示例:

y <- replicate(1, rnorm(20,0,1))
x <- rep(0,20)
x <- cbind(x, rep(0,20))
x[10,1] <- 1
x[15,2] <- 1
x_names <- which(x==1,1)
x_names #produces: 10, 15
colnames(x) <- x_names[,1]

reg <- lm(y ~ x)
summary(reg) #reports the results for x15 and x10

结果报告为“x10”和“x15”。

下面是一个向量不起作用的例子:

y <- replicate(1, rnorm(20,0,1))
x <- rep(0,20)
x[10] <- 1
x_names <- which(x==1,1)
x_names
names(x) <- x_names

reg <- lm(y ~ x)
summary(reg) #reports the result only for x, not x10

在第二种情况下,我希望输出将变量命名为“x10”,但它只报告为“x”。

有人可以提出解决方案吗?

谢谢!

【问题讨论】:

  • 对谁否决了这个问题:请注意,发帖人 (a) 是 SO 的新手,(b) 已真诚地努力发布一个可靠的问题 (c) 您投了反对票,但没有留下任何迹象表明为什么{这有什么帮助?}
  • 感谢 Ricardo 的评论,我应该将问题发布到其他地方还是换个说法?
  • 不,你很好。有人只是忘记了他们的举止

标签: r vector naming lm


【解决方案1】:

请注意,在第二种情况下,您不是命名变量集合,而是命名每个单独的元素。 (但是,由于您只为 10 个元素的集合分配了一个名称,其余的将获得 NAs 的名称)

lm 喜欢 data.frames。请尝试以下操作:

# creating x, y
x <- rep(0, 20)
x[[10]] <- 1

dat <- data.frame(NameForX=x, y)

lm(y~NameForX, data=dat)

将上面两行中的 NameForX 替换为适合您的任何内容

【讨论】:

  • 谢谢!有没有什么方法可以不用使用数据框就可以想到?如果没有,那么我将不得不坚持这些。
猜你喜欢
  • 1970-01-01
  • 2021-03-04
  • 1970-01-01
  • 2011-03-16
  • 2019-07-09
  • 1970-01-01
  • 2021-12-29
  • 2016-11-13
  • 1970-01-01
相关资源
最近更新 更多