如果数字介于两个数字之间,则分配一个值

Bil*_*ill 10 r

我试图将值-1分配给我的向量中介于2和5之间的每个数字.我认为if - then语句会起作用.我遇到了一些麻烦.我不认为(2

x <- c(3.2,6,7.8,1,3,2.5)
if (2<x<5){
    cat(-1)
} else {
    cat (x)
}
Run Code Online (Sandbox Code Playgroud)

mne*_*nel 19

您的代码中存在许多语法错误.

尝试使用 findInterval

x[findInterval(x, c(2,5)) == 1L] <- -1
x
## [1]  -1.0  6.0  7.8  1.0 -1.0 -1.0
Run Code Online (Sandbox Code Playgroud)

阅读?findInterval有关使用的更多详细信息findInterval

你也可以用 replace

replace(x, x > 2 & x < 5, -1)
Run Code Online (Sandbox Code Playgroud)

注意

  • 因为2<x<5你需要写x > 2 & x < 5
  • cat将输出到控制台或文件/连接.它不会分配任何东西.


Aar*_*ica 11

您可能只想用-1替换这些元素.

> x[x > 2 & x < 5] <- -1; x
[1] -1.0  6.0  7.8  1.0 -1.0 -1.0
Run Code Online (Sandbox Code Playgroud)

你也可以用ifelse.

> ifelse(x > 2 & x < 5, -1, x)
[1] -1.0  6.0  7.8  1.0 -1.0 -1.0
Run Code Online (Sandbox Code Playgroud)