我使用R,310(64位) 我试图创建一个预定长度的矢量(201),用作空图集的y轴范围,稍后填写。
我想为此向量设置最小最大值(5 000 000)以保持一个有点统一的图,同时处理不同的,有时更高的最大条目。
一个简单的if-else语句应该这样做(参见示例代码)。但是,我碰到了一些奇怪的东西,对于我的生活,我无法解释。使用vectorized ifelse()命令时,与标准的if-else命令结构相比,我得到了一个完全不同且非常错误的答案。我尝试在括号中设置个人和所有元素,例如ifelse((条件),(真),(假)),但无济于事。
这对我想要做的事情并不重要,但我真的很想知道这里发生了什么,因为我确信我会在某些时候陷入困境。我使用ifelse()命令很重要。
不幸的是,没有任何错误消息可以帮助我进一步理解R对这些命令的处理方式,因此您的答案将会受到赞赏。
提前谢谢 鲁道夫n.group <- c(2504576,2208945,1500043,90672,57432,345961,239856,138742,73890,23745,9348,5213,300)
y.axis <- c(100,250,500,1000,2500,5000,10000,50000,100000,500000,1000000,5000000)
y.range <- ifelse(max(n.group) < 5000000, seq(1, max(y.axis), length.out=201), seq(1, max(n.group), length.out=201))
> y.range
[1] 1 ## why just 1, it should be a vector with length 201?
## what goes wrong here?
max(n.group) < 5000000
[1] TRUE ## so, the ifelse should lead to a sequence with maximum 5 000 000
seq(1, max(y.axis), length.out=201)
[1] 1.00 25000.99 50000.99 75000.99 .......
[201] 5000000.00 ## thus my seq() command works
# what if I devectorize my ifelse?
if(max(n.group)<5000000){
y.range <- seq(1, max(y.axis), length.out=201)
}else {
y.range <- seq(1, max(n.group), length.out=201)}
> y.range
[1] 1.00 25000.99 50000.99 ........
[201] 5000000.00 ### now I get the vector of length = 201 ???