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列的数据集。
答案 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
来确定其结构。