2012-09-21 15 views
0

코드를 :단일 열 이름을 변경 (과 기능하여 가리키는)

A <- matrix(NA, nrow = 10, ncol = 3) 
colnames(A) <- paste('trial', 1:3) 

내가 trial 3 다른 뭔가 세 번째 열 이름을 지정할 보자 : 어떻게 내가 할 수 있습니까?

지금 확인 : 나는 predict 방법은 여기 반환 내용에 따라, pred의 첫 번째 값을보고 싶다면

library(vars) 
data(Canada) 
var.2c <- VAR(Canada, p = 2, type = "const") 
pred <- predict(var.2c, n.ahead = 8, ci = 0.95) 

, 나는 당신이 내가 볼 수

> pred$fcst$e[1] 
[1] 962.6557 

입력해야 원하는 값을 얻으려면 시계열 이름 e을 지정해야했습니다. 위의 코드를 함수에 삽입하면 시계열 이름을 지정하지 않고 pred$fcst$e[1]을 호출 할 수 없으므로 다른 시계열 데이터 프레임을 사용자 정의 함수에 전달할 수 없습니다.

예 : X을 시계열 데이터 프레임으로 지정하십시오. 그런 다음

pred.var <- function(X) { 
    var.2c <- VAR(X, p = 2, type = 'const') 
    pred <- predict(var.2c, n.ahead = 8, ci = .95) 
    # return(pred$fcst$...) # Here lies the issue, because function must know X column name 
} 

당신이 위의 예에서 볼 수 있듯이, 기능 pred.var는 예측을 반환해야 X 컬럼의 이름을 알고 있어야하지만 그것은 X에서 읽을 수 없습니다 않는 한.

아이디어가 있으십니까?

감사합니다.

+2

나는 아직 아주 잘 당신의 질문을 이해하지 않은,하지만 당신은 PRED $의 fcst의 $ 전자 '와 같은 번호로 액세스 할 수 있습니다 [1]'수행하여'PRED [[1]] [[1]] [1]'당신이 볼 수 있듯이 변수 이름을 요구하지 않습니다. –

+1

세 번째 열의 이름 바꾸기와 관련하여 주된 질문은 무엇입니까? 나는 이해하지 못한다. – Aaron

+0

음 ... 죄송합니다. 작가의 마음 속에는 현실보다 항상 쉬운 질문이 있습니다. 그건 그렇고, 그 대답은 제가 찾고있는 대답이었습니다. 고맙습니다. –

답변

1

$e 또는 [["e"]]으로 목록의 요소에 액세스 할 수 있습니다. 두 번째 요소에서 문자 변수를 사용할 수 있습니다. 그래서이 두 가지는 동일한 가치를 부여합니다.

pred$fcst$e[1] 
pred$fcst[[ colnames(Canada)[1] ]][1] 
1

어때요?

colnames(A) <- c("trial1","trial2","something-different") 

head(A) 
    trial1 trial2 something-different 
[1,]  NA  NA     NA 
[2,]  NA  NA     NA 
[3,]  NA  NA     NA 
[4,]  NA  NA     NA 
[5,]  NA  NA     NA 
[6,]  NA  NA     NA 

"something-different"는 물론 모든 이름입니다.

+0

erm ... 내 대답은 분명히 맨 처음 질문 일뿐입니다. 첫 번째와 나머지 사이를 연결할 수 없습니다. –

+0

좋아, 첫 번째 두 가지를 바꾸지 않고 세 번째 열 이름을 수정해야하는 경우 어떻게해야합니까? –

+0

당신은 colnames() 함수를 부분 집합 할 수 있습니다 :'colnames (A) [3] <- "bla"' –

관련 문제