- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题:我希望在 R 中找到类似 findInterval 的函数,它为输入提供一个标量和一个表示区间起点的向量,并返回标量落入的区间的索引。例如在 R 中:
findInterval(x = 2.6, vec = c(1.1,2.1,3.1,4.1))
#[1] 2
在this exchange有人在 Julia 中提供了一个函数来实现这个功能(见下一节)。显然基本 indexin
函数完成了这个任务。我想知道如何让 indexin
函数(或另一个基本函数)来执行此操作。我知道 Julia 循环很快,我可以编写一个函数,但如果有内置函数,我宁愿不这样做,这应该是一个常见问题。
当我用上面 R 中使用的相同数字尝试 indexin
函数时,我得到:
indexin([2.6], [1.1 2.1 3.1 4.1])
# 1-element Array{Int64,1}:
# 0
这只是表明 2.6 不在向量中,因为它(据我所知)正在寻找匹配值而不是在间隔中放置定标器。
来自上面引用链接的函数(我对输入\输出数据类型的更改)
function findInterval(x::Float64,vec::Array{Float64})
out = zeros(Int,length(x))
vec = unique(vec)
sort!(vec)
for j in 1:length(x)
if x[j] < vec[1]
out[1] = 0
elseif x[j] > vec[end]
out[end] = 0
else
out[j] = searchsortedfirst(vec,x[j])-1
end
end
return out
end
按预期工作:
findInterval(2.6, [1.1 2.1 3.1 4.1])
# 1-element Array{Int64,1}:
# 2
来自 SO 的相关问题: SO 上的其他问题寻找输入值和向量之间精确匹配的索引:
最佳答案
如果你的输入向量总是排序的,那么searchsortedlast
会做你想做的,例如
vec = [1.1, 2.1, 3.1, 4.1]
x = 2.6
searchsortedlast(vec, x)
但是,请注意 searchsortedlast
将返回 0
如果x < vec[1]
, 并将返回 length(vec)
如果x > vec[end]
.因此,您可能想要编写自己的自定义行为来检查这些结果,例如如果你想总是返回 0
如果x
不在 vec
中的任何区间内,你可以这样写:
function find_interval(vec, x)
i = searchsortedlast(vec, x)
i == length(vec) && (i = 0)
return(i)
end
此外,如果您经常使用排序向量,您可能会对我在 Julia 中为排序向量编写的包感兴趣,但从来没有想过添加到 METADATA
中。 . SortedVectors
的出处包裹是here .
关于 Julia 语言 : findInterval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37367941/
伟大的findInterval() R 中的函数在其 vec 中使用左闭子区间参数,如其文档所示: if i <- findInterval(x,v), we have v[i[j]] <= x[j]
问题:我希望在 R 中找到类似 findInterval 的函数,它为输入提供一个标量和一个表示区间起点的向量,并返回标量落入的区间的索引。例如在 R 中: findInterval(x = 2.6,
我很久以前就问过这个问题,但还没有找到答案。我不知道这在 stackoverflow 中是否合法,但我重新发布了它。 我在 R 中有一个 data.table,我想创建一个新列来查找相应年/月的每个价
我是一名优秀的程序员,十分优秀!