任何人都可以帮我重命名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
的列名?
答案 0 :(得分:9)
您需要先存储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是适当长度的替换名称的向量。不过,我认为第一种解决方案更容易(也更灵活)。
答案 1 :(得分:0)
model.matrix是一个功能吗?您是否想要将“reg”发送给model.matrix()一个新名称?该错误意味着该类型没有&lt; - 方法。查看[<-.factor
的R帮助以获取更多信息。
如果是这种情况,虽然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,因为我不确定你是什么。