尝试创建一个函数,该函数将生成累积热单位所需的天数列表/矢量。在函数中使用矢量索引
Day<-c(1:10)
min1<-c(0.70,1.45,2.22,2.98,3.75,4.50,5.02,5.34,5.61,5.81)
data<-as.data.frame(cbind(Day,min1))
下面的函数正确地对输出数据$ MIN1超过2天:
days.till<-function (x) min(data$Day[data$min1>=x])
days.till(2)
但是,如果我尝试使用一些x值,我得到一个错误。
days.till(2:4)
[1] 4
Warning message:
In data$min1 >= x :
longer object length is not a multiple of shorter object length
以下策略返回相同的错误:
days.till(c(2:4))
days.till<-function (x=2:4) min(data$Day[data$min1>=x])
我已经在其他简单的功能使用多个输入值没有问题,所以我担心在函数中向量索引导致了问题。任何帮助将不胜感激。
你可以换你的函数在'Vectorize'中:'Vectorize(days.till)(2:4)' –
顺便说一句,检查'findInterval',因为在这种情况下它会快很多:'findInterval(2:4,data $ min1)+ 1 ' –
@alexis_laz你应该添加这个作为答案(与microbenchmark结果) - 它肯定快得多,就像其他发布的解决方案一样简单 – josliber