r - dplyr 中的排列错误:位置 1 的大小(1)不正确,预期:3947
问题描述
# 我一直试图让它工作好几天。没运气。每个#vector 的长度为 3947,我在 as.numeric、#as.data.frame 和输入之间进行了更改。欢迎大家提出意见。
#pulling data from outcomes on hospitals, with eventual attempt to return ranking based on this.
rankall<-function(outcome,num) {
library(datasets)
library(plyr)
library(dplyr)
data<-read.csv("outcome-of-care-measures.csv", na.strings="Not Available",
stringsAsFactors=FALSE)
if (outcome == "pneumonia"){
column_index<-23
} else if (outcome == "heart attack") {
column_index<-11
} else if (outcome == "heart failure") {
column_index<-17
} else {
stop("invalid outcome")
}
data2<-cbind(data[,2],data[,7],data[,column_index])
data2<-na.omit(data2)
colnames(data2)<-c("hospital", "state", outcome)
order1<-data2[order(as.numeric(data2[,outcome]), data2[,"hospital"]),]
numrows<-nrow(order1)
as.data.frame(order1) %>%
arrange(outcome, .by_group=TRUE)
print(class(data2[,"hospital"]))
print(class(data2[,2]))
print(class(data2[,3]))
}
解决方案
您需要将结果变成一个符号,它现在被视为一个字符串。也见此。要纠正,请执行以下操作:
library(dplyr)
data2 = data.frame(x=runif(100),
hospital=sample(LETTERS,100,replace=TRUE),
"heart attack" = rbinom(100,1,0.5),
"pneumonia" = rbinom(100,1,0.5),check.names=FALSE)
outcome = "pneumonia"
data2 %>% arrange(outcome, .by_group=TRUE)
Error: incorrect size (1) at position 1, expecting : 100
data2 %>% arrange(!!sym(outcome), .by_group=TRUE)
x hospital heart attack pneumonia
1 0.471584775 B 0 0
2 0.907479862 S 1 0
3 0.141569308 Q 0 0
4 0.511258807 A 0 0
推荐阅读
- r - 根据其他列值创建一个新变量
- javascript - 为什么我不能使用匿名函数表达式来访问数组索引位置?
- python - 如何将数据框从 GridDB 容器转换为列表列表?
- r - 有条件地替换数据框中的所有值
- php - 如何在laravel php中将数据存储到excel报告中
- image - 检查png图像在golang中是否全部透明
- javascript - javascript匹配所有对象中定义的值并返回变量中的其余值
- rest - 我可以在 RAP 应用程序中模拟数据传输对象吗?
- c# - C# RijndaelManaged 加密输出错误
- c# - 我如何将此 LINQ 查询更改为方法方式而不是 SQL 查找方式