2014-03-29 2 views
0

간단한 데이터 프레임이 있습니다.행에 적용 적용

V1 V2 V3 
1 1 4 7 
2 2 5 8 
3 3 6 9 

내가 그 행에있는 모든 항목의 합으로 각 행의 항목을 분할, 그리고 얻을 것이 :

V1 V2 V3 
1 0.08 0.33 0.58 
2 0.13 0.33 0.53 
3 0.16 0.33 0.50 

그것은 mydf[1,]/sum(mydf[1,])를 사용하고 3 번을 반복 꽤 간단합니다, 그러나 이것은 지루합니다.

적용 기능이 작동한다는 직관적 인 느낌이 있습니다.

는 내가 필요 막연한 개념이 있습니다
1) 기능 래퍼
2) apply(myfunction, 1, mydataframe)

사용에 mydf[1,]/sum(mydf[1,])을 넣어하지만 myfunction에 인수가 어떻게 될지 모르겠어요.

나는 이것에 약간 혼란스럽고 어떤 도움을 주셔서 감사합니다.

답변

1
dat <- data.frame(matrix(1:9, nrow=3)) 
dat/rowSums(dat) 

또한 apply를 사용할 수 있지만 행렬을 반환 (그리고 t와 트랜스해야하는) 것입니다.

t(apply(dat, 1, FUN=function(x) x/sum(x))) 
+0

죄송합니다. 내 첫 번째 해결 방법은 잘못되었습니다. 전환합니다. 결정된. –

+0

이 경우에는'apply' 함수가 필요 없습니다. 'apply'를 사용하여 연습하고 싶다면, 이것은 좋은 운동입니까? –

+0

'apply' (필자의'apply' 해결책을 고쳤습니다)를 사용할 수는 있지만'colSums' 솔루션은 조금 투명 해졌으며 트랜스 포저를 저장하고 데이터 프레임으로 재 작성 ('apply'가 매트릭스를 반환)한다고 생각합니다. –