顺序错误(datastate $ c):参数1不是向量

时间:2015-01-31 02:50:46

标签: r

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不是向量

我相信这是因为我没有正确地编写代码。代码show显示我放入函数的状态的名称,并按第三列的顺序创建3列的数据集。

1 个答案:

答案 0 :(得分:11)

Error in order(datastate$c) : argument 1 is not a vector表示order()不知道如何处理datastate$c,因为它不是矢量。由于您还没有提供数据,我无法确定,但我的猜测是datastate$c正在返回NULL

您的问题可能在于以下代码:

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

根据?split,&#34; split返回的值是包含组值的向量列表。列表的组成部分由f&#34;的级别命名。换句话说,您的对象datastates不再具有data.frame的结构,并且您访问datastate$c的尝试不起作用。我会将您的功能运行到datastates <- split(dataset, dataset$State),然后在str()上调用datastates来确定其结构。