请帮我简化以下for循环到*apply
函数。我想避免使用明确的for loop
,但我无法弄明白
在哪里放置额外的参数。下面的代码工作得很好,但我有兴趣改进它。
rankall
是我的函数名称,state
是向量,hospital
是向量。
rankall <- function(outcome, num = "best") {
df.outcome <- read.csv("outcome-of-care-measures.csv", colClasses = "character")
state <- unique(df.outcome[,7])
size <- length(state)
hospital <- character(size)
for(i in 1:size) {
hospital[i] <- rankhospital(state[i], outcome, num)
}
df <- data.frame(hospital,state)
df[order(df[,2]),]
}
答案 0 :(得分:3)
您可以使用以下行代替for loop
hospital <- sapply(state, rankhospital, outcome = outcome, num = num)
代替
for(i in 1:size) {
hospital[i] <- rankhospital(state[i], outcome, num)
}
当你有多个参数时,像往常一样使用第一个参数,但剩下的参数作为sapply
函数的附加参数。