2013-03-14 3 views
0

데이터 그룹이 20 개 그룹으로 나뉩니다. 각 그룹 (데이터의 2 열)에 대한 데이터를 저장하는 행렬은 목록에 저장되므로 루프 내에서 각 세트의 기능을 수행 할 수 있습니다. 다른 행렬에서 실행할 수있는 함수의 출력을 저장하고 싶습니다.행렬에 함수 출력 (다중 출력 포함) 저장

예를 들어 20 개 그룹 모두에서 fitdistr()을 실행하면 그룹 1의 결과를 호출하기 위해 distribution [1]을 호출 할 수 있도록 함수 출력을 매트릭스에 저장하고 싶습니다.

distribution<-ls() 

for(i in (1:20)) 
    { distribution[[i]]<-fitdistr(as.numeric(data[[i]]$Column2,"normal") } 

이 성공적으로 저장 출력 및 I를 호출 할 수있다 : 다음을 시도

distribution[1] 

문제가 있다는 fitdistr() 2 데이터 열의 결과 - 평균 및 표준 일탈. 나는 수단 및 표준 동향을 찾고됩니다

distribution[1]$mean 

:에 의해

names(distribtuion) 
"NULL" 

그래서 분명히 수단을 얻을 호출 할 수 없습니다, 말 : 나는 주어진 포인트에 대한 평균을 호출 할 수 있음을 확인 편차 (및 다른 배포판에 대한 다른 매개 변수), 그래서 가능한 모든 경우 어떻게 든 매트릭스에 저장된 fitdistr() 결과를 갖고 싶습니다. 어떻게 든 호출 할 수 있다고해도, 함수를 실행할 때 평균을 말하면 빈 벡터를 만들어 루프로 채운 다음 표준 편차만큼 반복 할 수 있습니다.

데이터를 저장할만큼 큰 빈 행렬을 만드는 것을 고려했습니다 (20 행, 각 그룹에 1 개, 계산 된 각 값에 대해 2 개의 열, 1 개). 나는 여전히 계산 된 평균을 1 열에 저장하고 계산 된 표준 편차를 2 열에 저장하도록 지시하는 방법을 확신하지 못합니다. 다시 한번 한 번에 여러 출력 중 하나만을 요구하는 문제입니다 .

또한 적용 기능 중 하나를 살펴 보았지만 이는 내가하는 일에 적합하지 않은 것으로 보입니다.

+0

일을 시도'유통 [[1]] $ mean'은 (두 브래킷을 참고). 또한 '평균'이 아닌 '추정'이어야 하는가? –

+1

'ls()'는 주어진 환경에서 객체를 나열하는 함수입니다. 문자 벡터를 반환합니다. – mnel

+0

아, 네. 나는 목록을 의미했다. ( –

답변

0

ls()는 주어진 환경에서 개체를 나열하는 함수입니다. 문자 벡터를 반환합니다.

당신은 아마 list()을 의미합니다.

하지만 루프 내에서 목록을 늘릴 수는 있습니다. R 지옥의 두 번째 원입니다.

대신 lapply을 적절한 기능과 함께 사용하십시오. as.numeric을 원하는 위치로 말하기는 어렵지만 예에서는 올바르지 않습니다.

뭔가 같은 ..

distribution <- lapply(data, function(x) fitdistr(as.numeric(x[['Column2']]),"normal")) 
+0

) 큰 데이터 세트를 가지고 있기 때문에 as.numeric이 거기에있다. 각 bin은 원래 데이터의 헤더를 유지하므로 데이터에서 fitdistr() 함수를 실행하려고하면 오류가 발생했습니다. 제안한 코드 행을 시험 중입니다. 몇 가지 오류가 발생하지만 계속 살펴보고 제대로 작동하는지 확인해 보겠습니다.이 오류를 기반으로 발생할 수있는 한 가지 문제는 다음과 같습니다. .subset2 (x, i, exact = exact) 오류 : 은 하나의 요소를 선택하려고 시도합니다. 내 bin 중 일부에 0 데이터가 있다는 사실입니다. 그것에있는 점. –

+0

@ user2154249 - 재현 할 수없는 예제 없이는 더 이상 도움이되지 않습니다. – mnel