2016-10-25 5 views
0

이것은 R의 일반적인 접근법에 대한 질문입니다. R 언어로 길을 찾고자하지만 데이터 유형과 루프 접근법 (적용, 사프리 등)은 나에게 불분명합니다 .반복적 인 질의를위한 R 접근법

목표 : 여러 매개 변수가있는 구성 목록의 매개 변수를 사용하여 API의 데이터를 쿼리합니다. 집계 된 data.frame으로 데이터를 반환합니다.

먼저 나는

site   segment id 
google.com Googleuser 123 
bing.com  Binguser 456 

어떻게 값 그룹의 이러한 목록을 관리 할 수있는 여러 벡터의 목록 (colums) (행 단위로) 정의 할? data.frames는 열 집중 형이므로 R 스크립트에서 한 행씩 data.frame을 작성할 수 없습니다. 그래서이 초기 설정 테이블을 정의하는 유일한 방법은 csv입니다. 이것은 필자가 피하려고하는 접근 방법이지만, 좀 더 우아하게 만드는 방법을 찾을 수는 없습니다.

지금 내 데이터를 조회하려면,이 기능을 말할 수 :이 날 결과로 data.frame을 줄 것이다

query.data <- function(site, segment, id){ 
    config <- define_request(site, segment, id) 
    result <- query_api(config) 
    return result 
} 

이 내가 같은 열이 사용되는 데이터를 쿼리 할 때마다 의미한다. 따라서 내 결과는 비슷한 data.frames 목록이 아닌 하나의 큰 data.frame이어야합니다.

이제 sapply는 하나의 매개 변수 목록과 여러 개의 정적 매개 변수를 사용할 수 있습니다. mapply는 작동하지만, 처리 할 수없는 미친 출력에서 ​​내 데이터를 제공하거나 정확히 무엇인지 이해합니다.

원칙적으로 data.frames 목록은 괜찮습니다. 데이터는 정확하지만 나에게 부담 스럽습니다.

R의 핵심 개념이 아직 이해하지 못했습니까? 접근 방법은 무엇입니까?

+0

당신이해야 할 경우 행별로 data.frame을 빌드하기 위해'rbind (df, new_row)'를 사용하십시오. 좀 더 나은 접근법은'query_api()'에 대해 생각하고있는 방식을 비 직렬화하는 것일 수 있습니다. 그러나 그렇게하는 방법을 명확히하기 위해서는 구체적인 세부 사항이 충분하지 않습니다. – stephematician

답변

0

동일한 열이있는 데이터 프레임 목록을 반환하는 앱/솔루션 솔루션을 사용하는 경우 do.call()을 사용하면 하나의 큰 데이터 프레임을 쉽게 얻을 수 있습니다. do.call() 입력하면 하나의 큰 dataframe에 구성 요소 dataframes를 추가 할

big.df <- do.call(rbind, list.of.dfs) 

과 같은 일을 할 수 있도록 다른 함수에 인수로 목록의 각 항목.

일반적으로 do.call(rbind,something)은 R로 작업 할 때 주머니에 넣어 두는 것이 좋은 방법입니다. 무엇인가를하는 가장 효율적인 방법은 실제로 원하는 경우 요소 목록을 남기는 적용 기능 일 수 있기 때문입니다. 단일 행렬/벡터/데이터 프레임/등.

+0

도움을 주셔서 감사합니다. 이미 시도한 방법입니다. do.call은 나에게 데이터 프레임을 제공하는데, 각 행은 작은 데이터 프레임 이름을 포함하는 레이블을 가지고있다. 이것은 귀찮은 것이 아니지만 성가 시게 보입니다. 그리고 나는 여전히 하나의 목록이 아니라 3 가지 매개 변수로 모든 기능을 제대로 적용하는 법을 모릅니다 ... – michaelsinner

+0

다음 질문에 정보를 추가해야한다고 생각합니다. 올바른 정보를 담고있는 데이터 프레임 목록이 있었고 단일 데이터 프레임이 필요했습니다. 문제가 입력 행렬을 가지고 있고, 각 행을 함수로 공급하여 결과를 행렬에 저장하고 싶습니까? – rsandler