Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在r中的data.table中使用函数时出错_R_Function_Data.table - Fatal编程技术网

在r中的data.table中使用函数时出错

在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中使用了一个函数,由于某些原因,该函数在data.table中使用时不起作用,但在R环境中使用时效果良好。有人知道为什么会这样吗

基本上,该函数将数组中最近的年份指定给data.table中的给定年份。该函数要求一个变量是一年(在data.table中),第二个变量是可能的年份数组,其中要获得最接近的年份。下面是代码的示例

我得到警告:

“警告信息: 在Yearray-YearI中: 较长的对象长度不是较短对象长度的倍数“

库(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]]