2013-03-01 4 views
1

'R'에 관해서는 초보자지만 정보는 많이 읽었고 왜 벡터를 인쇄 할 수 없는지 이해할 수 없습니다. 내 함수 fn에서 반환 - 나는 단순히 값 "NULL"을 얻을. 이 함수의 목적은 두 배열에서 값을 가져 와서 함께 추가하고 새 배열에 넣는 것입니다. print (test) 명령을 사용하여 배열의 숫자가 올바르게 추가되었는지 확인합니다. 어쩌면 내가 잘못 추가하고있는 것일까 요? 지금은 문제가 보이지 않습니다. 우선벡터가 반환되지 않는 함수와 관련된 문제

fn <- function(x,y) { 
liste <- vector(mode = "numeric", length = 192) 
k <- 0 
for (i in 1:(length(x))) { 
    for (j in 1:(length(y))) { 
     test<-x[i] + y[j] 
     print(test) 
     append(liste,test, after=k) 
     k <- k +1 
    } 
} 
return(liste) 
} 

event1 = c(0.0,5.0,10.0,12.0) 
event2 = c(0.0,3.0,5.0,7.0) 
event3 = c(6.0,8.0,10.0,10.0,12.0,13.0,13.0,14.0,16.0,17.0,17.0,20.0) 

z <-fn(event2,event3) 
names(z) 

답변

6

, z이 (전체 0의의) 벡터이다, 그냥 익명의 벡터입니다. 그래서 names(z)NULL을 반환합니다.

둘째, 당신의 접근 방식에서,이 라인 :

append(liste,test, after=k) 

단순히되어야한다 : append 그것이 전달하지 변화 벡터를 않기 때문에

liste[k] = test 

이것은 단지입니다 새 것을 반환합니다.

fn <- function(x, y) { 
    rowSums(expand.grid(x, y)) 
} 
+0

(+1) 마지막 줄은 실제 답변입니다 :

그러나, 당신은 expand.grid 기능을 사용하여, 뭘 하려는지 할 수있는 훨씬 쉬운 방법이있다. 나는 그걸 쓰고 있었어. – Arun

+0

답변 해 주셔서 감사합니다. 하지만 변수에 반환 값을 어떻게 할당할까요? z <-fn (event2, event3)을 할 수 없다면? 벡터화 된 awesomeness에 대해서는 – John

+0

+1. –

관련 문제