使用apply函数代替R中的for和branch语句

时间:2014-09-10 15:50:01

标签: r lapply

我正在使用R并希望停止使用分支和语句来利用apply函数。话虽这么说,我有这个清单,x:

x < - c(5,12,19,26,2,9,16,23)

我想要一个相应的列表如下:

for i in x
     if (i<=7) 1
     else if (i<=14) 2
     else if (i<=21) 3
     else if (i<=28) 4
     else 5

最终的新名单将是:1,2,3,4,1,2,3,4

如何使用其中一个apply语句执行此操作?每次我尝试写一个,我最后都会挠头一小时,然后在这里发一个问题。

谢谢。

2 个答案:

答案 0 :(得分:2)

只需使用cut

x <- c(5, 12, 21, 35)

as.integer(cut(x, c(-Inf, 7, 14, 21, 28, Inf)))
#[1] 1 2 3 5

答案 1 :(得分:0)

显示ifelse use:

ifelse(x<7,1,ifelse(x<14,2,ifelse(x<21,3,ifelse(x<28,4,5))))
[1] 1 2 3 4 1 2 3 4