2015-01-31 1 views
1
best <- function(state, outcome) { 
    data = read.csv("outcome-of-care-measures.csv", colClasses="character") 
    data[, 11] <- as.numeric(data[, 11]) 
    data[, 17] <- as.numeric(data[, 17]) 
    data[, 23] <- as.numeric(data[, 23]) 
    if (outcome == "heart attack") { 
     dataset <- data[,c(2,7,11)] 
    } else if (outcome == "heart failure") { 
     dataset <- data[,c(2,7,17)] 
    } else if (outcome == "pneumonia") { 
     dataset <- data[,c(2,7,23)] 
    } 
    dataset<- na.omit(dataset) 
    names(dataset)<- c("a","State","c") 

    datastates <- split(dataset, dataset$State) 
    datastate <- datastates$state 
    order.h <- order(datastate$c) 

    answer <- datastate[order.h,] 
    answer [1,1] 
} 

오류 코드는 다음과 같습니다. 순서에 따른 오류 (datastate $ c) : 인수 1이 벡터가 아닙니다.

올바르게 입력하기 전에 코드를 작성하지 않았기 때문입니다. 코드 쇼는 함수에 넣은 상태의 이름을 사용하고 세 번째 열의 순서로 세 열의 데이터 집합을 만듭니다.

+0

다음과 같이 알려주십시오. ** 이미 ** print (datastate $ c)'를 ** 표시하십시오. 데이터 집합이 없으면이 예제는 재현 할 수 없습니다. 'datastate $ c'의 요소는 당신의'if..else' 래더에 의해 선택된 여러 열에서옵니다. – smci

+0

최소한의 코드 샘플 * (최소 재현 예제) *으로 문제를 좁혀 야합니다. 데이터 세트없이 여기에 코드 벽을 게시 할 필요가 없습니다. – smci

답변

6

Error in order(datastate$c) : argument 1 is not a vectordatastate$c이 (가) 벡터가 아니므로 order()이 (를) 알지 못한다는 것을 의미합니다. 나는 당신이 데이터를 제공하지 않았기 때문에 확실하게 말할 수는 없다. 그러나 내 생각에 datastate$cNULL을 반환한다.

당신의 문제는 아마 다음과 같은 코드에있다

:

names(dataset)<- c("a","State","c") 
datastates<- split(dataset, dataset$State) 
datastate <- datastates$state 
order.h <- order(datastate$c) 

?split에 따르면, "분할에서 반환 된 값이 그룹에 대한 값을 포함하는 벡터의 목록입니다 목록의 구성 요소에 의해 지정됩니다. f의 수준 ". 즉, 객체 datastates의 구조가 data.frame이 아니며 datastate$c에 대한 액세스가 작동하지 않습니다. datastates <- split(dataset, dataset$State)까지 함수를 실행 한 다음 str()datastates으로 호출하여 구조를 결정합니다.

관련 문제