用户定义的函数在r中进行sapply

时间:2016-09-20 17:20:42

标签: r sapply

我的代码如下:

data("USArrests")

AssignLevel <- function(p,quartiles)
{
  if (p < quartiles[1])
    rlevel <-"LOW"
  else if (p < quartiles[2])
    rlevel <-"MODERATE"
  else if (p < quartiles[3])
    rlevel <-"HIGH"
  else level <-"VERY HIGH"
  return (rlevel)
}
k<-USArrests$UrbanPop
k

q<- quantile(USArrests$UrbanPop, c(.25,.5,.75))

newCol <- sapply(USArrests$UrbanPop,AssignLevel(k,q))

我试图将每个州的城市流行音乐价值改为相应的四分之一。它在我运行AssignLevel(k,q)时有效,但在我运行时无法运行。

1 个答案:

答案 0 :(得分:1)

我同意cut解决方案更好。为了好玩,以下是解决当前问题的方法:

data("USArrests")

AssignLevel <- function(p,quartiles) {
  if (p < quartiles[[1]]){
    rlevel <- "LOW"
  } else if(p < quartiles[[2]]) {
    rlevel <- "MODERATE"
  } else if(p < quartiles[[3]]) {
    rlevel <- "HIGH"
  } else {
    rlevel <- "VERY HIGH"
  }
  return (rlevel)
}
k <- USArrests$UrbanPop

q <- quantile(k, c(.25,.5,.75))


newCol <- sapply(k,AssignLevel,q)