在R:如何命名向量,以便在使用lm()时显示名称

时间:2013-09-25 15:39:52

标签: r vector naming lm

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

在实践中,我希望代码检查向量等于1的位置,并使用此信息来命名变量。

以下是一个带有矩阵的示例:

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”。

有人可以建议解决方案吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

请注意,在第二个实例中,您没有命名变量集合,而是命名每个单独的元素。 (但是,由于您只为一个包含10个元素的集合分配了一个名称,其余的名称将获得NA个名称)

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替换为适合你的