3

任何人都可以帮助我重命名 的列名model.matix吗?

我一直在尝试重命名我的列:

colnames(model.matrix(reg))[1] <- c("Intercept")

但我收到错误消息:

could not find function "model.matrix<-"

这是model.matrix对象:

model.matrix.default(reg)
   xxXB(Intercept) xxXBproductPageViews xxXBqty_order xxXBLag.sales
2         1.782842             2352.032      1.804487      303.0831
4         1.782842             1569.158      1.799786      369.0831
5         1.782842             2541.884      1.806206      434.7506
6         1.782842             2932.289      1.811827      414.7104
7         1.782842             2670.780      1.798207      360.4423
8         1.782842             2694.579      1.793033      291.9571
9         1.782842             5435.900      1.791143      325.7292
10        1.782842            10727.969      1.807148      602.7453
11        1.782842            12711.044      1.826717     1130.3189
12        1.782842            10774.425      1.808426     1694.6620
13        1.782842             8597.127      1.789496     1611.1204
14        1.782842             7647.235      1.789358     1161.2223
15        1.782842             5538.071      1.798733      979.3913
16        1.782842             4240.954      1.798549      813.5173
17        1.782842             3890.973      1.787179      668.3082
18        1.782842             4086.364      1.816897      563.1715
19        1.782842             4878.903      1.815232      552.4128
20        1.782842             3999.407      1.787328      612.4691
21        1.782842             3349.887      1.875233      526.7774
22        1.782842             5394.895      1.891263      599.2761
23        1.782842             4682.374      1.817970     1290.7023
24        1.782842             3346.345      1.805635     1057.0534
25        1.782842             3106.214      1.839484      638.3726
26        1.782842             4559.091      1.878944      611.1822
attr(,"assign")
[1] 1 1 1 1

上面的矩阵是lm方程的矩阵,称为reg。现在如何更改列名 model.matrix

4

2 回答 2

10

您需要先存储model.matrix结果,然后重命名其列。

mm <- model.matrix(reg)
colnames(mm)[1] <- c("Intercept")

更一般地,您可以使用gsub以下命令替换所有名称中的“xxXB”部分:

colnames(mm) <- gsub("xxXB","",colnames(mm))

另一种方法将涉及以下内容:

`colnames<-`(model.matrix(reg),1:4)

其中 1:4 是适当长度的替换名称的向量。不过,我认为第一个解决方案更容易(也更灵活)。

于 2013-08-16T11:44:38.267 回答
0

model.matrix 是一个函数吗?您是否想为将“reg”发送到 model.matrix() 的结果赋予一个新名称?该错误意味着该类型没有 <- 方法。查看 R 帮助以[<-.factor获取更多信息。

如果是这种情况,尽管 model.matrix(您拼写为 model.matix)没有列,但它是一个函数,您想要更改其返回的名称。

尝试这个

model.matrix <- function(x) {
      matrix(runif(4), nrow = 2, ncol = 2,
            dimnames = list(c("r1", "r2"), c("C1", "C2")))
    }

而你在做什么

colnames(model.matrix(1))[1] <- 'a' 

将不起作用,但您可以执行以下操作

x <- model.matrix(1)
colnames(x)[1] <- 'a'

我只是给出一个 1 的论点,因为我不确定你的 'reg' 是什么。

于 2013-08-16T11:53:53.067 回答