我的代码如下:

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)时它起作用,但是当我运行sapply时它不起作用。

最佳答案

我同意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)

关于r - 使用用户定义的函数在r中应用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39600209/

10-12 21:37