用于问卷评分的类似开关的功能

aL3*_*3xa 3 for-loop r switch-statement

我最近做了一个严肃的PHP/JS编码,我有点失去了我的R肌肉.虽然这个问题可以在PHP/JS中轻松解决,但解决这个问题的最有效方法是什么:我必须对问卷进行评分,并且我有以下方案:

raw    t
5      0
6      2
7-9    3
10-12  4
15-20  5
Run Code Online (Sandbox Code Playgroud)

如果x等于或者在给定的范围内raw,t则应返回相应行中的值.当然,这可以通过for循环完成,或者switch,只是想象一下非常冗长的值范围集raw.你会如何解决这个问题?

42-*_*42- 5

我们似乎错过了一个例子,因为没有提到"x"

dat <- read.table(textConnection("raw    t
 5      0
 6      2
 7-9    3
 10-12  4
 15-20  5"), header=TRUE, stringsAsFactors=FALSE)
dat$bot <- as.numeric( sapply( sapply(dat$raw, strsplit, "-"), "[", 1 ))
get.t <- function(x) findInterval(x, dat$bot)
 get.t(8)
#[1] 3
> dat$t[get.t(6)]
[1] 2
> dat$t[get.t(5)]
[1] 0
Run Code Online (Sandbox Code Playgroud)

  • `findInterval`和`match`在实现无循环代码的过程中非常方便. (2认同)