2016-08-04 1 views
0

Coursera R 프로그래밍 과정을 진행하고 있으며 for 루프 결과를 벡터에 바인딩하는 데 문제가 있습니다.R의 벡터에 임계 값이있는 루프 출력을 바인딩합니다. 3.3.1

나는 분석 코드가 단일 테이블에서 작동하는지 이미 확인했지만 모든 332 값을 바인딩하는 방법을 완전히 모르겠습니다. 나는 list.files 라인에 아무 문제가 없었습니다, 다른 기능에서

> x <- corr("specdata", 20) 
Error in list.files(directory, full.names = TRUE) : 
invalid 'path' argument 

:이 프로그램을 실행할 때

corr <- function(directory, threshold = 0, id = 1:332) { 
    filename <- list.files(directory, full.names = TRUE) 
    a <- numeric() 
    for(i in id) { 
    tmp_data <- read.csv(filename[i]) 
    nobs <- sum(complete.cases(tmp_data)) 
    if(nobs < threshold) { 
     a} else { 
     nonas <- tmp_data[!is.na(tmp_data$sulfate) & !is.na(tmp_data$nitrate),] 
     x <- corr(nonas$sulfate, nonas$nitrate) 
     a[i] <- x 
     } 
    } 
    a 
} 

, 나는이 오류의 수익을 얻을. 나는 잘못된 것을하고 있다는 것을 알고 있지만 그것을 이해할 수는 없다.

+0

"specdata"은 (는) 작업 디렉토리에 있습니까? 그렇지 않으면 전체 경로를 지정해야합니다 (예 : "C :/Users/Documents/R/specdata") – Robert

+0

예, "specdata"는 작업 디렉토리 내에 있습니다. – JDS

+0

'x <- corr (directory = "specdata", threshold = 20)'을 시도하면 어떨까요? –

답변

0

나는 그것을 알아 냈다. 나는 무의식적으로 내 코드에서 재귀 적으로 발생했습니다. corr()이 아니라 cor()이어야합니다.

corr <- function(directory, threshold = 0, id = 1:332) { 
    filename <- list.files(directory, full.names = TRUE) 
    a <- c() 
    for(i in id) { 
    tmp_data <- read.csv(filename[i]) 
    nobs <- sum(complete.cases(tmp_data)) 
    if(nobs > threshold) { 
     nonas <- tmp_data[!is.na(tmp_data$sulfate) & !is.na(tmp_data$nitrate),] 
     x <- cor(nonas$sulfate, nonas$nitrate) 
     a[i] <- x 
     } 
    } 
    b <- na.omit(a) 
} 
관련 문제