2014-02-13 4 views
0

R에서 apply 함수를 사용하여 연습하고 있으므로 데이터 프레임에 적용 할 간단한 함수를 작성하고 있습니다.R : 함수에 대한 인수로 데이터 프레임을 올바르게 사용하기

2 개의 열이있는 데이터 프레임이 있습니다.

V1 V2 
1  3 
2  4 

은 내가 특별히, 그때 그 합계 3에서 2로 첫 번째 열 및 두 번째 열을 곱하려면, 몇 가지 기본적인 산술을하고 3 열에서 답을하기로 결정했다.

mydf <- as.data.frame(matrix(c(1:4),ncol=2,nrow=2)) 
some_function <- function(some_df) {some_df[,1]*2 + 
            some_df[,2]*3} 
mydf <- apply(mydf ,2, some_function) 

을하지만 함수 내 인수 잘못된 것입니다 :

V1 V2 V3 
1  3  11 
2  4  16 

는 여기에 내가 생각 무엇인가? R은 데이터 프레임의 차원에 관해 나에게 오류를주고있다. 왜? 잘못된

+0

곱하기를 예제로 선택 했습니까? 아니면 실제 작업입니까? –

+0

그냥 예일뿐입니다 –

답변

1

세 가지 : [1] 없습니다 [1]
2)에 의해 실행해야 그냥 이름을 해결할 수 있도록

1) 적용은 각 열 또는 행 중 하나의 벡터를 "루프" 행 MARGIN = 1,하지 당신이 벡터

mydf <- as.data.frame(matrix(c(1:4),ncol=2,nrow=2)) 

some_function <- function(some_df) {some_df[1]*2 + 
             some_df[2]*3} 

mydf <- cbind(mydf,V3=apply(mydf ,1, some_function)) 

# V1 V2 V3 
#1 1 3 11 
#2 2 4 16 

을 덮어하고 있지만, 아마 쉽게 그냥 벡터 연산을 할 수 있도록, 추가하지 않습니다 적용되기 때문에, 그 결과를 cbind 할 필요가 2
3) :

mydf$V3<-mydf[,1]*2 + mydf[,2]*3 

벡터 수학은 가장 좋은 점 중 하나이므로 R

+0

고마워요! 이것은 매우 도움이되었습니다. –

관련 문제