2013-08-16 2 views
1

model.matix의 열 이름을 바꾸는 데 도움을 줄 수 있습니까?Model.matrix에서 열 이름의 이름 바꾸기

내 열 이름을 시도하고있다 :

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

을하지만 오류 메시지가 점점 오전 :

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 

위의 매트릭스 :

여기
could not find function "model.matrix<-" 

model.matrix 개체입니다 lm 방정식 reg이라는 행렬입니다. 이제 model.matrix의 열 이름을 어떻게 바꿀 수 있습니까?

+0

[재현 가능한 예] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)를 제공해주십시오. – Thomas

+0

xxXB (가로 채기), xxXBproductPageViews, xxXBqty_order, xxXBLag.sales는 열 이름이지만 모든 열 이름에서 xxXB를 제거하려고합니다. – kapil

+0

'model.matrix.default (reg)'가 아니고'colnames ... '의 model.matrix (reg)가 아님 – Metrics

답변

9

먼저 model.matrix 결과를 저장하고 해당 열의 이름을 바꿔야합니다.

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

여기서 다른 방법은 다음과 관련된 것

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

:

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

더 일반적으로 당신은 모든 이름에서 "의 ⅩⅩⅩB"부품을 교체 할 gsub을 사용할 수 있었다 1 : 4는 적절한 길이의 대체 이름 벡터입니다. 나는 첫 번째 솔루션이 더 쉽고 (더 유연함) 생각한다.

+0

감사합니다 ..하지만, colnames (model.matrix (reg))에서 잘못되었습니다 [ 1] <- c ("가로 채기") ?? 왜 우리는 변수를 할당해야합니까 ?? – kapil

+0

@kapil 100 % 확신 할 수는 없지만 R이 호출의 내용을 행렬로 해석하지 않는다고 생각합니다. 어쩌면 게으른 평가 일 수도 있고 이러한 특정 메소드에 관한 것일 수도 있지만, 이것은 모든'* names' 함수에서 발생합니다. – Thomas

+0

@ 토마스 귀하의 첫 번째 옵션은 나를 위해 매우 도움이되었습니다.그러나 나는 많은 매트릭스를 가지고 있는데 어떻게 "Zn"과 "Mg"에 의해 "Zinc"과 "Magnesium"만 이름을 바꿀 수 있습니까? 나는 그것을 시도했지만 작동하지 않는다 : 예. 'Colnames (mm) [C ("Zinc", "Magnesium")] <- c ("Zn", "Mg")' –

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' 

을 수행 할 수 있습니다 당신이 'reg'이 무엇인지 확신 할 수 없기 때문입니다.

+0

'model.matrix'는 ** stats ** 패키지 (기본적으로로드 됨)의 함수입니다 ... 그래서 제안대로 다시 정의하면 아마 도움이되지 않습니다. – Thomas

+0

사용중인 함수처럼 작동하도록 정의하는 중입니다. 이제 상수를주고 동일한 반환 형식을 얻을 수 있습니다. 나는 당신에게 그것을 재정의 할 것을 권장하지 않는다. 문제를 재현 할 수 있도록하는 것이 중요했습니다. 그렇지 않으면 실행할 reg를 만들어야합니다. 질문에 대답하는 부분은 그 이후입니다. – darrelkj