【问题标题】:sapply in r with user defined function使用用户定义的函数在 r 中应用
【发布时间】:2016-09-20 17:20:41
【问题描述】:

我的代码如下:

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
  • aye: cut(USArrests$UrbanPop, breaks=c(min(USArrests$UrbanPop), q, max(USArrests$UrbanPop)), labels=c("LOW", "MODERATE", "HIGH", "VERY HIGH"), include.lowest=TRUE) 干净多了。

标签: r sapply


【解决方案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)

【讨论】:

    猜你喜欢
    • 2013-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    • 1970-01-01
    • 2019-04-03
    • 1970-01-01
    相关资源
    最近更新 更多