2016-06-23 3 views
0

저는 R에서 초보자이며 R 함수를 작성하는 데 손을 댑니다. 내가 쓴 기능은 지금이내 자신의 함수 작성

male <- c(1:10) 
female <- c(11:20) 
msum <- function(h,j) { 
for(i in 1:length(h)){ 
    e <- c() 
    e[i] = h[i] + j[i] 
    i = i+1 
} 
e 
} 

처럼 내가 p <- msum(male, female)하여 함수를 호출 할 때, 나는 남자의 합과 여성의 벡터하지만 내가 얻을이 같은 결과에 길이 10의 벡터로 출력을 찾습니다 첫 번째 9 개 위치의 값으로 NA의 길이 10 인 벡터이며 벡터의 마지막 값은 30입니다. 내가 어디로 잘못 가고 있니?

+1

이것은 범위 지정 문제입니다. 당신은 for 루프 안에서'e'를 정의했지만 루프 밖에서 사용했습니다. –

+1

'i'를 증가시킬 필요가 없으므로'i = i + 1' 라인을 제거하십시오. –

+0

또한 함수에 이름을 붙이는 것은 매우 혼란 스러울 수 있습니다. 기본 R 함수와 동일합니다 ('sum'은 이미 존재합니다). – r2evans

답변

0

참조 :

male <- c(1:10) 
female <- c(11:20) 

msum <- function(h,j) { 
    e <- c() 
    for(i in 1:length(h)){ 

    e[i] = h[i] + j[i] 
    } 
    e 
} 
msum(male, female) 

[1] 12 14 16 18 20 22 24 26 28 30 
+1

'e'의 메모리는 가능하면 미리 할당해야합니다. 'e <- c()'대신에'e <- 정수 (길이 (h))' –

0

내가 뭔가를 누락 될 수 있습니다,하지만 난 당신이 예를 들어 사용자 정의 함수를 필요 모르겠어요 : 나는 당신이 포장 수도있을 것 같군요하지만

male + female 

그것을 함수로 변환합니다 :

vect_sum <- function(vec1, vec2) { 
    vec1 + vec2 
} 
vect_sum(male, female)