【发布时间】:2017-10-18 22:39:39
【问题描述】:
我在 data.table 中使用了一个函数,由于某种原因,它在 data.table 中使用时不起作用,但在 R 环境中使用时效果很好。有人知道为什么会这样吗?
基本上,该函数将数组中最接近的年份分配给 data.table 中的给定年份。该函数需要一个变量是一年(在 data.table 中),第二个变量是可能年份的数组,其中要获得最接近的年份。代码示例如下。
我收到警告:
“警告信息: 在 YearsArray - YearI 中: 较长的对象长度不是较短对象长度的倍数"
library (data.table)
DAT<-data.table(Yr=1950:1960)
ArrayYearsB<- c(1950, 1955, 1960)
#---start---pair-years function----#
YearPairing <- function (YearI,YearsArray)
{
YearB=c(abs(YearsArray-YearI))
YearA=min(YearB)
YearA=grep(paste0("^",YearA,"$"),YearB)
YearA= YearsArray[YearA][1]
return(YearA)
}
#---end---pair-years function----#
DAT[,YearB:=YearPairing(Yr,ArrayYearsB)]
YearPairing(1950,ArrayYearsB)
【问题讨论】:
标签: r function data.table