2

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

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

谢谢!

4

1 回答 1

1

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

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 替换为适合您的任何内容

于 2013-09-25T16:10:53.603 回答