2016-06-25 2 views
2

나는이 오류 님에게 메일 및 역 추적지고있어 :에만 모든 숫자 변수와 데이터 프레임에 정의

Error in FUN(X[[i]], ...) : 
    only defined on a data frame with all numeric variables 

5 stop("only defined on a data frame with all numeric variables") 
4 FUN(X[[i]], ...) 
3 lapply(args, function(x) { 
    x <- as.matrix(x) 
    if (!is.numeric(x) && !is.complex(x)) 
     stop("only defined on a data frame with all numeric variables") ... 
2 Summary.data.frame(structure(list(Date = structure(c(279L, 285L, 
291L, 297L, 303L, 315L, 321L, 327L, 333L, 339L, 345L, 357L, 363L, 
369L, 375L, 387L, 393L, 399L, 405L, 417L, 423L, 429L, 435L, 441L, 
447L, 453L, 477L, 501L, 555L, 561L, 567L, 573L, 579L, 585L, 591L, ... 
1 corr("specdata") 

내 연구 결과에 따르면 데이터 세트에 숫자가 아닌 데이터가 있다는 의미입니다. 제가 사용하고있는 데이터 세트는 Coursera 코스에서 가져온 것이고, 그렇다면 다른 사람들도 제가 생각한 것과 같은 문제를 겪고 있다고 가정 할 것입니다. 그러나 토론에서 어떤 언급도없는 것 같습니다. 보드 또는 유사한 문제의 온라인.

corr <- function(directory, threshold = 0) { 

vect1 <- numeric() 
files_list <- list.files(directory, full.names = TRUE) 

for (i in 1:332) { 

    data <- read.csv(files_list[i]) 
    good <- complete.cases(data) 
    complete_data <- data[good,] 
    sulfate <- complete_data[,2] 
    nitrate <- complete_data[,3] 

     if (sum(complete_data) >= threshold) { 
      b <- cor(sulfate,nitrate) 
      vect1 <- rbind(b) 
     } 
     else vect1 <- (numeric()) 
    } 
    return(vect1) 
} 
오류 메시지에서

와 상관 관계가 황산 및 질산에서 실행중인 때 오류가 발생하는 "생각"역 추적 : 내 유일한 추측은 아래 내 기능 코드의 결과라는 것이다 열. 디렉토리의 첫 번째 파일에서 코드를 실행하면 오류 메시지없이 정상적으로 실행됩니다. 이 오류가 발생하는 이유와 해결 방법에 대한 도움이나 통찰력이 도움이 될 것입니다.

나는 숫자 인으로 데이터 집합을 강요하는 것을 시도했다 -

complete_data <- as.numeric(data[good,]) 

을하지만 난 다시 다른 오류 메시지 "오류 : (목록) 개체가 '더블'입력 강요 할 수 없다"

+0

인자로 'nitrate'또는 'sulfur'가 읽혀 지거나 if 문이 숫자가 아닌 값이 포함 된 data.frame의 합계를 취하려고 시도하는 것일 수 있습니다. 아마도 catch가'if (nrow (complete_data)> = threshold)'일 것입니다. –

+0

Tad 감사합니다 - 실제로 오류 메시지를 일으키는 문제가있었습니다! 당신의 도움을 주셔서 감사합니다! –

답변

0

아마도 전체 데이터 프레임을 합산하는 대신 좋은 데이터의 행 수를 계산해야합니다.

if (nrow(complete_data) >= threshold) { 
    b <- cor(sulfate,nitrate) 
    vect1 <- rbind(b) 
} 
+0

잡아 주셔서 감사합니다. 제가 쓴 오류를 해결하지 못했지만 다른 오류를 확실히 막았습니다. –

+0

@LauraJaneDefibaugh 오류를 해결하지 못하면 솔루션으로 표시하지 않으면 미래의 독자를 오도하게합니다. –

1

대답은 '전체 데이터'개체를 합산 할 수 없습니다. 나는 논리적 인 벡터 '좋은'을 합산하려고했지만 오류를 만들고 잘못된 객체를 합산하려고했습니다. 대신에 complete_data의 nrow 카운트를 사용했는데 이것이 내 문제를 해결했습니다!