2016-10-08 3 views
1

이것은 모든 입력에 대해 NA를 제공하는 코드입니다. . 내가 어디 잘못 갈거야 알고 도와주세요 (저는 초보자입니다)여러 파일에서 열의 평균을 찾고 싶습니다.

pollutantmean <- function(directory, pollutant, id=1:332){ 
    fname <- sprintf("%s/%03d.csv", directory, id) 
    ldf <- lapply(fname, read.csv) 
    df <- unlist(ldf) 
    a <- matrix(df, ncol = 3) 
    dfa <- data.frame(a) 
    colnames(dfa)<-c("date", "sulfate", "nitrate") 
    mn<-mean(dfa[, pollutant],na.rm=TRUE) 
    print(mn) 
} 
+0

더 나은 원하는)'함수에서 값을 반환합니다. – jogo

답변

1

결국 당신이 원하는 :

fname <- sprintf("%s/%03d.csv", directory, id) 
ldf <- lapply(fname, read.csv) 

my.mean <- function(df, pollutant) mean(df[, pollutant], na.rm=TRUE) 

pollutant <- "nitrate" # or "sulfate" 
sapply(ldf, my.mean, pollutant) # or 
mean(sapply(ldf, my.mean, pollutant)) 

Alternativly 당신이 (`인쇄를 사용하지 않는

mean(unlist(sapply(ldf, '[[', pollutant), na.rm=TRUE)) 
+0

안녕하세요! 사실 모든 파일에서 오염 물질의 한 가지 의미를 원합니다. 위의 코드는 각각의 개별 파일에 대한 열의 평균을 나타냅니다. –

+0

@SONALIJHA 내 대답을 편집했습니다. 변경 사항에 대해 의견을 말하십시오. – jogo

+0

파일의 길이가 다른 경우,'sapply'는리스트를 반환하고'mean (sapply (ldf, '[[', 오염 물질), na.rm = TRUE]'오류를 던집니다. 나는 당신이 또한 그것을 돌볼 필요가 있다고 생각한다 :'mean (unlist (sapply (ldf, '[[', pollutant)], na.rm = TRUE)'. 모든 파일의 길이가 같다는 것을 알았다면 연결 수단의 평균은 개별 파일 수단의 평균이 될 것입니다. – dww

관련 문제