- 此问题在此处已有答案**:
Why are these numbers not equal?(6个答案)
3天前关闭。
我有一些数据的格式
test <- c(10,11,12,13.1,13.2,13.3,14,15)
整数计数等效于4个子单元的计数单位,因此13.1等不意味着13又十分之一,而是13又四分之一(即从1到2的计数为1、1.1、1.2、1.3、2等)我正尝试绘制这些图,因此,为了使间距正确,我认为需要更改它们,使x.1变为x.25,x.2变为x.5,x.3变为x.75。我可以扩展整数,但我认为这会导致其他问题,所以我更愿意做.25/.5/.75的转换。
我尝试使用switch()
执行此操作,但没有得到预期的结果,因此我想我的问题有两个:
1.为什么switch()
不能按预期工作?
1.有什么更好的方法来做到这一点,我显然错过了?
我试着取输入的模1,只给我.0,.1等,乘以10,加1,得到一个数字1 - 4,并使用它从switch()
语句中选择相关的case选项,如下所示。
预期结果:[1] 10.00 11.00 12.00 13.25 13.5 13.75 14.00 15.00
因此13.1和13.2项的评估结果似乎与我预期的不同。
# testing modulo approach
sapply(test, FUN = \(x) {
(x %% 1)*10+1
}
)
[1] 1 1 1 2 3 4 1 1
然后
sapply(test, FUN = \(x) {
switch((x %% 1)*10+1,
x, # option 1
floor(x) + 0.25, # option 2
floor(x) + 0.5, # option 3
floor(x) + 0.75) # option 4
}
)
[1] 10.00 11.00 12.00 13.10 13.25 13.75 14.00 15.00
1条答案
按热度按时间xwbd5t1u1#
可以尝试使用
floor