我有一个数据集(在美国的医院),我需要从一个子集(特定状态的医院)从数据框中获取特定列(例如心脏病发作的生命值)最小的行。
test <- function(state, outcome) {
## Read outcome data
## Check that state and outcome are valid
datasubset ## subsetting datta
targetrow <- datasubset[which.min(datasubset$outcome),] ##get the row where "outcome" is minimum
##get hospital name where outcome is minimum
##get the minimum value
##just there to check if function works until this point
}
如果我运行该函数,则打印datasubset,但是我得到的另外两个打印命令 字符(0)和 NULL
但是,如果我手动插入行代码并手动更改状态和结果,我会得到正确的结果。我真的不明白为什么它在我使用该函数时不起作用,但是当我将命令直接写入R时工作。我想哪个.min的问题? 在此先感谢您的帮助
(我知道这是约翰霍普金斯大学R课程的一部分,但是如果结束了,我仍然希望得到一个有效的功能!它让我发疯了)
数据如下所示:
Hospital.Name State heart attack heart failure pneumonia
4262 CENTRAL VERMONT MEDICAL CENTER VT 15.4 13.7 11.4
enter code here
如果有人想要重现它,我也可以上传它。 编辑:代码编辑,以避免人们只是为他们的课程复制此代码。
答案 0 :(得分:3)
这里的错误是您使用$运算符进行索引。 datasubset $ outcome指的是列结果(数据框中没有)。
# Refer to column with the name that is stored in the variable outcome
datasubset[which.min(datasubset[,outcome]),]
# Refer to column that have the name outcome
datasubset[which.min(datasubset$outcome),]
运行此代码以进一步了解$和[]
之间的区别df <- data.frame(x=1:5,y=6:10)
x <- "y"
df$x #Gives x column
df[,x] #Gives y column