我写了一个有些奇怪的函数,它应该只返回一个具有两个值的向量。
例如,如果您输入33,则应返回(30,40)。
这没有比这更简单的了。
为什么这仅返回
尽管大多数回复关注于(理所当然地!)批评我写烂了的
例如,如果您输入33,则应返回(30,40)。
这没有比这更简单的了。
return_a_range <- function(number){
ans <- ifelse( (30 <= number & number <= 40), c(30, 40),
(ifelse( (40 < number & number <= 50), c(40, 50),
(ifelse( (50 < number & number <= 60), c(50, 60),
(ifelse( (60 < number & number <= 70), c(60, 70),
(ifelse( (70 < number & number <= 80), c(70, 80),
(ifelse( (80 < number & number <= 100), c(80, 100),
ans <- c("NA"))))))))))))
return(ans)}
return_a_range(33)
为什么这仅返回
30
?我为什么没有收到c(30, 40)
?为什么R决定仅返回向量中第一个位置的值?
编辑尽管大多数回复关注于(理所当然地!)批评我写烂了的
ifelse
语句,但我认为最好回答实际问题的是下面评论中的@MrFick。
ifelse()
函数返回的向量长度始终与你输入的向量长度相同(即number
的长度)。在每个“case”中不能返回多个元素。但是建议您使用findInterval
或cut
函数,而不是像这样使用ifelse
。 - MrFlickcar::recode
怎么适用于这个。 - Rich Scrivenx <- 33; 10 * floor(x / 10) + c(0, 10)
- rawrswitch
不能进行向量化,这令人惊讶和不幸。 - tumultous_rooster?vectorize
。 - Carl Witthoft