dplyr函数抛出;filter_impl(.data,dots)中出错:一元运算符的参数无效;

dplyr函数抛出;filter_impl(.data,dots)中出错:一元运算符的参数无效;,r,dplyr,R,Dplyr,长期使用SAS,但新手R程序员试图通过Coursera的R编程课程学习。在最后的任务中,尝试输出医院的最低死亡率,功能输入包括状态和结果名称(例如,心脏病发作) 我正在尝试用dplyr做所有的事情,因为我知道这是一种很好的数据处理方法。但是我下面的代码抛出了一个“filter_impl(.data,dots)中的错误:一元运算符的参数无效”错误 以下是我尝试过的:查看“R for Data Science”一书,搜索StackOverflow和其他在线位置,运行我的函数片段以缩小它的范围(我只粘

长期使用SAS,但新手R程序员试图通过Coursera的R编程课程学习。在最后的任务中,尝试输出医院的最低死亡率,功能输入包括状态和结果名称(例如,心脏病发作)

我正在尝试用dplyr做所有的事情,因为我知道这是一种很好的数据处理方法。但是我下面的代码抛出了一个“filter_impl(.data,dots)中的错误:一元运算符的参数无效”错误

以下是我尝试过的:查看“R for Data Science”一书,搜索StackOverflow和其他在线位置,运行我的函数片段以缩小它的范围(我只粘贴了一个函数片段,因为错误发生在3个位置),显示了回溯,等等。当然,在所有这些源代码之后,我尝试了许多不同的代码编辑,但nada除外

有人能给我指一下正确的方向吗

best <- function(state_input, oc_name) {
    outcome <- read.csv("outcome-of-care-measures.csv", colClasses = "character")    
    if (oc_name == "heart attack") {
        return_outcome <- outcome %>% select(State, 
                                         Hospital.30.Day.Death..Mortality..Rates.from.Heart.Attack) %>% 
            filter(State == state_input) %>% 
            arrange(Hospital.30.Day.Death..Mortality..Rates.from.Heart.Attack) %>%
            top_n(1, -Hospital.30.Day.Death..Mortality..Rates.from.Heart.Attack)
    }
}
best(state_input = "TX", oc_name = "heart attack")
best%
安排(住院.30天.死亡.死亡率.发病率.心脏病发作)%>%
(1,-医院。30天。死亡。死亡率。比率。心脏病。发作)
}
}
最佳(state_input=“TX”,oc_name=“心脏病发作”)

该错误可能与mt1022所说的字符列类参数有关。相反,您应该使用
stringsAsFactors=FALSE

outcome <- read.csv("outcome-of-care-measures.csv", stringsAsFactors = FALSE)
结果%
安排(住院.30天.死亡.死亡率.发病率.心脏病发作)%>%
(1,-医院。30天。死亡。死亡率。比率。心脏病。发作)
返回(返回结果)
}
最佳心脏病发作(状态输入=“TX”,结果=结果)

按照指定的
colClasses=“character”
,所有列都将是字符。因此,
-Hospital.30.Day.Death..Death..Rates.from.Heart.Attack
将通过一个错误来实现。如果要避免某些字符列被读取为数字,请确保将其他列转换为正确的类型。
best_heart_attack <- function(state_input, outcome) {
    return_outcome <- outcome %>% 
        select(State, Hospital.30.Day.Death..Mortality..Rates.from.Heart.Attack) %>% 
        filter(State == state_input) %>% 
        arrange(Hospital.30.Day.Death..Mortality..Rates.from.Heart.Attack) %>%
        top_n(1, -Hospital.30.Day.Death..Mortality..Rates.from.Heart.Attack)

    return(return_outcome)
}

best_heart_attack(state_input = "TX", outcome = outcome)