【发布时间】:2018-04-08 15:50:22
【问题描述】:
我正在尝试编写一个具有 2 个参数的函数:列名和排名号。该函数将读取一个包含每个州医院的 CSV 文件。该函数应返回具有指定排名的医院名称的数据框。
我的解决方案是按州拆分主 CSV 文件,按所需列对每个数据帧排序,遍历每个州的数据帧,抓取行(其中行号 = 排名号),将每个州的医院名称存储到一个向量,然后使用循环中的向量创建一个数据框。
当我在控制台中测试我的功能的每个部分时,我能够收到我需要的结果。但是,当我完全运行该功能时,它并没有按需要存储医院名称。
这是我所拥有的:
rankall <- function(outcome, num = "best") {
outcomedf <- read.csv("outcome-of-care-measures.csv")
#using this as a test
outcomedf <- outcomedf[order(outcomedf[, 11], outcomedf[, 2]), ]
#create empty vectors for hospital name and state
hospital <- c()
state <- c()
#split the read dataframe
splitdf <- split(outcomedf, outcomedf$State)
#for loop through each split df
for (i in 1:length(splitdf)) {
#store the ranked hospital name into hospital vector
hospital[i] <- as.character(splitdf[[i]][num, 2])
#store the ranked hospital state into state vector
state[i] <- as.character(splitdf[[i]][, 7])
}
#create a df with hospital and state
rankdf <- data.frame(hospital, state)
return(rankdf)
}
当我完全运行该函数时,我在“医院”列中收到 NA,但是当我单独运行该函数的每个部分时,我能够收到所需的医院名称。我有点困惑为什么我能够在函数之外运行这个函数的每个单独部分并返回我想要的结果,但是当我作为一个整体运行函数时却没有。谢谢你。
【问题讨论】:
-
你能用
dput(head(outcomedf, 20))的输出编辑问题吗?
标签: r