2013-12-12 2 views
1

저는 R에서 어떤 작업을 수행하도록 요청받은 C# 프로그래머입니다. 함수를 데이터 프레임의 '청크'로 여러 번 호출하는 방법을 알아야합니다. 처음 두 개의 열이 구별되는 모든 행에 대해 함수를 한 번 호출해야합니다. 여기 데이터 프레임의 청크에 함수 적용

가 무슨 뜻입니다 : 나는 기능 네 번 호출하려는 위의 데이터의

Stratum<-c("FPN", "FPN", "FPN", "MPN", "MPN", "MPN") 
Cal<-c("ynnn", "ynnn", "yynn", "ynnn", "ynnn", "yynn") 
Band.1<-c(1,2,1,1,2,1) 
Band.2<-c(2,3,2,2,3,2) 
Regroup<-c("No","Yes","No","Yes","No","No") 
decs.data<-data.frame(Stratum,Cal,Band.1,Band.2,Regroup,stringsAsFactors=FALSE) 

Stratum Cal Band.1 Band.2 Regroup 
    FPN ynnn  1  2  No 
    FPN ynnn  2  3  Yes 
    FPN yynn  1  2  No 
    MPN ynnn  1  2  Yes 
    MPN ynnn  2  3  No 
    MPN yynn  1  2  No 

- 한 번 통과 decs.data의 모든 행 곳 지층이 = "FPN"와 칼 = "ynnn ", 그런 다음 Stratum ="FPN "및 Cal ="yynn "등등.

이 함수는 해당 행에서 작동하지 않으며,이 함수를 사용하여 디스크에서로드 할 데이터 파일과 그 행선을 결정합니다.

R에서이 방식으로 함수를 호출하면 어떻게 될까요? 나는 '적용'이 반드시 포함되어야한다고 생각하지만, 어떻게 해결할 지 고심하고 있습니다.

UPDATE : 나는 4 & 5, 함수에 인수, 단지 일치하는 것 (즉, 행 2의 1 호 1 & 2, 3과 data.frame의 모든 행이 필요하지 않습니다 3 일과 6 일은 5 일).

이 함수는 Stratum & 칼럼 (예 : FPN.ynnn.rdata)을 기반으로 데이터 파일을로드 한 다음 Band.1, Band.2 및 Regroup 열을 기반으로 처리하는 방법을 결정합니다.

기본적으로 decs.data는 조작하려는 데이터가 아니라 rdata 파일의 어떤 밴드가 재 그룹화되어야 하는지를 정의하는 의사 결정 매트릭스입니다.

+0

기능에 대한 세부 정보를 제공 한 경우 적절한 해결 방법을 찾는 것이 더 쉬울 것입니다. 나는 아래에'by '을 언급했는데, 이것이 효과가있다. 그러나'data.frame'의 모든 행이 함수의 인수로 필요하지 않다면 약간 더 간단한 해결책을 사용할 수 있습니다. – nograpes

+0

감사합니다. 더 좋은 정보를 추가했습니다. – Nelviticus

+0

내 대답은 귀하의 업데이트에도 불구하고 여전히 정확하다고 생각합니다. – nograpes

답변

4

당신은 by을 찾고 있습니다. 당신이 분할 변수로 StratumCal을 사용하여 decs.data의 하위 집합에 기능을 실행하려면, 당신은 할 수 있습니다 :

by(decs.data,decs.data[c('Stratum','Cal')],function) 

function는 함수입니다.

+1

(decs.data, decs.data [c ('Stratum', 'Cal')], 함수로 작성해야 함) – rfoley

관련 문제