如何重构for循环,调用具有多个参数的函数,以“* apply”?

时间:2015-02-27 10:00:33

标签: r

请帮我简化以下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]),]
}

1 个答案:

答案 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函数的附加参数。