在r中的data.table中使用函数时出错
我在data.table中使用了一个函数,由于某些原因,该函数在data.table中使用时不起作用,但在R环境中使用时效果良好。有人知道为什么会这样吗 基本上,该函数将数组中最近的年份指定给data.table中的给定年份。该函数要求一个变量是一年(在data.table中),第二个变量是可能的年份数组,其中要获得最接近的年份。下面是代码的示例 我得到警告: “警告信息: 在Yearray-YearI中: 较长的对象长度不是较短对象长度的倍数“在r中的data.table中使用函数时出错,r,function,data.table,R,Function,Data.table,我在data.table中使用了一个函数,由于某些原因,该函数在data.table中使用时不起作用,但在R环境中使用时效果良好。有人知道为什么会这样吗 基本上,该函数将数组中最近的年份指定给data.table中的给定年份。该函数要求一个变量是一年(在data.table中),第二个变量是可能的年份数组,其中要获得最接近的年份。下面是代码的示例 我得到警告: “警告信息: 在Yearray-YearI中: 较长的对象长度不是较短对象长度的倍数“ 库(data.table) DAT对于这个特殊的
库(data.table)
DAT对于这个特殊的问题,可以使用如下滚动参数
data.table(Yr=ArrayYearsB)[DAT, roll="nearest", .(Yr=i.Yr, that=x.Yr), on="Yr"]
Yr that
1: 1950 1950
2: 1951 1950
3: 1952 1950
4: 1953 1955
5: 1954 1955
6: 1955 1955
7: 1956 1955
8: 1957 1955
9: 1958 1960
10: 1959 1960
11: 1960 1960
这里,将向量转换为data.table,在DAT中添加所需的变量名称,然后使用on=“Yr”将data.table,DAT用作左连接。roll参数被指定为“最近的”,它选择向量的最近值。该结果被输入j语句,并使用i.
和x.
提取所需的结果
要重新分配到主表,请执行以下操作:
DAT[, that := data.table(Yr = ArrayYearsB)[DAT, on=.(Yr), roll="nearest", x.Yr]]
是否有方法将“that”作为data.table DAT中的一列附加到?
DAT[, that := data.table(Yr = ArrayYearsB)[DAT, on=.(Yr), roll="nearest", x.Yr]]