假设我有一个整数数组:
arr = [0,5,7,8,11,16]
Run Code Online (Sandbox Code Playgroud)
我有另一个整数:
n = 6
Run Code Online (Sandbox Code Playgroud)
我需要一个向下舍入到数组中最接近的数字的函数:
foo(n) #=> 5
Run Code Online (Sandbox Code Playgroud)
如您所见,数字没有固定的模式.这是一种优雅的方式吗?
谢谢
我有一个时间序列和值的数据框.时间序列是纪元的秒数.以下是该数据框中前几个元素的外观
val = seq(1,19)
ts = seq(1342980888,1342982000,by=60)
x = data.frame(ts = ts,val = val)
head(x)
ts val
1 1342980888 1
2 1342980948 2
3 1342981008 3
4 1342981068 4
5 1342981128 5
6 1342981188 6
Run Code Online (Sandbox Code Playgroud)
我想某种间隔搜索功能,它接收时间戳1342980889(第一行中的ts为+1)作为输入,它应该返回1,2(行号)作为输出.基本上,我想找到具有括起输入时间戳1342980889.时间标记的两行虽然这是比较容易使用"的",我怀疑"其中"做了矢量扫描和真实数据帧是相当办我希望使用二进制搜索来做到这一点.非常感谢提前
我想要floor()下一个特定数字(不是数字,而是实际值)。例如,对于年份列表:
valid_years = c(1990,2000,2006,2012,2018) # values to round to ("snap")
input = c(1990, 1991, 1992, 1993, 2000, 2001, 2002, 2006, 2007, 2016, 2020)
output = c(1990, 1990, 1990, 1990, 2000, 2000, 2000, 2006, 2006, 2012, 2018)
Run Code Online (Sandbox Code Playgroud)
低于(或在ceil()高于指定值的情况下)输入的行为对我来说并不重要。在我的情况下,一个好的行为是捕捉到 中的最低值valid_years,但这对我来说并不重要。
我知道我可以用 if-then-else (eg if(x < 2006) x = 2000 else if(x < 2012) x = 2006 ...)来实现这一点,但我相信有更优雅的方法来解决这个问题。
我浏览了许多“R 中的舍入”问题,但尽管有许多措辞相似的问题,但都没有找到答案,这些问题都有其独特的(不同)目标:例如,四舍五入到特定的小数步长, 四舍五入到某个范围内的任意数字或条件舍入。