R Vapply与IF&字符串输出

时间:2017-04-07 17:07:57

标签: r apply

由于效率问题,我试图用vapply替换我的for循环。我有1列(x),其值为我想要ID的四分位数。然后将其粘贴到另一列中。最初我的for循环是......

for (i in 1:length(x)){
  if(x[i]> quantile(x,.75,na.rm=TRUE)) {
    y[i]="Q4"
  } else if (x[i]> quantile(x,.5,na.rm=TRUE)){
    y[i]="Q3"
  } else if (x[i]> quantile(x,.25,na.rm=TRUE)){
    y[i]="Q2"
  } else if (x[i]>=0) {
    y[i] = "Q1"
  } else (y[i]="")
}

这很棒!但我读了一篇文章,讨论了如何更有效地查看。所以,我玩了一遍并尝试了代码...

vapply(quantiletable, function(x,y)
  if(x> quantile(x,.75,na.rm=TRUE)) {
    y="Q4"
  } else if (x> quantile(x,.5,na.rm=TRUE)){
    y="Q3"
  } else if (x> quantile(x,.25,na.rm=TRUE)){
    y="Q2"
  } else if (x>=0) {
    y = "Q1"
  } else (y="")
,rep(0,2))

这是我第一次尝试vapply,所以我确定我错过了某些东西/不允许做某事。

我得到的错误是...... 警告信息:

In FUN(X[[i]]) : argument length is > 1 and only the first element will be used (4 times)
Error: values must be length 2, but FUN(X[[1]]) result is length 1

非常感谢任何帮助!

0 个答案:

没有答案