which.min不产生任何输出

时间:2015-11-30 08:40:38

标签: r

我有一个数据集(在美国的医院),我需要从一个子集(特定状态的医院)从数据框中获取特定列(例如心脏病发作的生命值)最小的行。

    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

如果有人想要重现它,我也可以上传它。 编辑:代码编辑,以避免人们只是为他们的课程复制此代码。

1 个答案:

答案 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