data.table v1.9.5(R)中shift()函数的奇怪行为

ag

我正在使用data.table(v1.9.5)的当前开发版本,主要是因为它具有出色的内置shift()功能。

我注意到,当尝试在一个data.table调用中对语句进行分组时(其中一个是对的调用),shift()我从中得到一些时髦的行为:

library(data.table)

foo = data.table(x = c(1, 5, 6 ,2, 9, 8))

foo[, y := {
        delta = c(NA, diff(x));
        lag = shift(x, n = 1L, fill = NA);
        list(delta/lag)}]

上面的添加尝试y会引发以下错误:

Error in delta/lag : non-numeric argument to binary operator

所以,我检查什么,我只是通过创造越来越deltalag没有试图在所有互动它们:

foo[, c('delta', 'lag') := 
      list(c(NA, diff(x)),
           shift(x, n = 1L, fill = NA))]
foo
   x delta               lag
1: 1   NA  NA, 1, 5, 6, 2, 9
2: 5    4  NA, 1, 5, 6, 2, 9
3: 6    1  NA, 1, 5, 6, 2, 9
4: 2   -4  NA, 1, 5, 6, 2, 9
5: 9    7  NA, 1, 5, 6, 2, 9
6: 8   -1  NA, 1, 5, 6, 2, 9

如果我分开通话,我就能得到我想要的东西:

foo[, delta := c(NA, diff(x))]
foo[, lag := shift(x, n = 1L, fill = NA)]

foo
   x delta lag
1: 1   NA   NA
2: 5    4    1
3: 6    1    5
4: 2   -4    6
5: 9    7    2
6: 8   -1    9

这是一个错误还是我在这里错过了一些东西?

编辑:正如Pascal指出的那样,我最初的示例中的错误是shift()返回列表的事实的结果

阿伦

随着近期v1.9.5承诺shift()返回Vector矢量输入length(n) == 1也就是说,当答案list长度为1的a时,为方便起见,我们返回一个向量。这使我们能够:

DT[, col := shift(val, type = "lead")] # or "lag"

DT[, col := valA + shift(valB, type="lead")] # or "lag"

在这两种情况下,都返回一个向量RHS:=返回原子时,其向量list()为方便起见内部进行包装,从而产生了预期的行为。

关闭#1127

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

R Data.Table 运算后的列称为 V1

来自分类Dev

如何在Ubuntu 16.04 LTS中为TP-Link Archer T9E V1安装驱动程序

来自分类Dev

data.table(R)中的ifelse行为

来自分类Dev

v-data-table expand.sync行为中的v-data-table,当合拢扩展列时需要触发

来自分类Dev

未初始化的常量V1仅在Cloud9上

来自分类Dev

如何覆盖语义UI v1中的设置

来自分类Dev

Api :: V1 :: PostsController#show中的ActiveRecord :: RecordNotFound

来自分类Dev

版本“ v1”中的部署不能作为部署处理:

来自分类Dev

交易何时在 HLF v1 中完成?

来自分类Dev

Google 地图在 Ionic v1 中无法正常工作

来自分类Dev

React-Bootstrap v1 中的 Panel.Collapse

来自分类Dev

在TensorFlow v1中隐式启用TensorFlow v2行为

来自分类Dev

固定由9s(例如99、999、9999)表示的NA匹配data.table(或fread)中的列宽

来自分类Dev

如何清除v-data-table中的选定行,Vuetify

来自分类Dev

自动选择 v-data-table 中的行

来自分类Dev

xslt模板v1,v2中的复杂变量

来自分类Dev

TensorFlow v1和v2中Keras的ZeroPadding2D的区别?

来自分类Dev

在相同的Docker映像中运行AWS CLI V1和V2

来自分类Dev

r data.table在函数调用中的用法

来自分类Dev

在R中的函数内向data.table添加新列

来自分类Dev

data.table在R中逐行应用函数

来自分类Dev

R的data.table找不到函数“。”

来自分类Dev

R data.table用户定义函数

来自分类Dev

FireBase sendMessage函数更新到v1 Google Cloud Endpoint

来自分类Dev

Firebase Cloud Message 通过 HTTP v1 api 使用主题函数返回 400

来自分类Dev

在data.table v1.8.10和v1.9.2中将非常小的数字(例如1e-28)和0.0分组

来自分类Dev

data.table的包装函数

来自分类Dev

data.table:j中的匿名函数

来自分类Dev

在函数中使用data.table怪异行为

Related 相关文章

  1. 1

    R Data.Table 运算后的列称为 V1

  2. 2

    如何在Ubuntu 16.04 LTS中为TP-Link Archer T9E V1安装驱动程序

  3. 3

    data.table(R)中的ifelse行为

  4. 4

    v-data-table expand.sync行为中的v-data-table,当合拢扩展列时需要触发

  5. 5

    未初始化的常量V1仅在Cloud9上

  6. 6

    如何覆盖语义UI v1中的设置

  7. 7

    Api :: V1 :: PostsController#show中的ActiveRecord :: RecordNotFound

  8. 8

    版本“ v1”中的部署不能作为部署处理:

  9. 9

    交易何时在 HLF v1 中完成?

  10. 10

    Google 地图在 Ionic v1 中无法正常工作

  11. 11

    React-Bootstrap v1 中的 Panel.Collapse

  12. 12

    在TensorFlow v1中隐式启用TensorFlow v2行为

  13. 13

    固定由9s(例如99、999、9999)表示的NA匹配data.table(或fread)中的列宽

  14. 14

    如何清除v-data-table中的选定行,Vuetify

  15. 15

    自动选择 v-data-table 中的行

  16. 16

    xslt模板v1,v2中的复杂变量

  17. 17

    TensorFlow v1和v2中Keras的ZeroPadding2D的区别?

  18. 18

    在相同的Docker映像中运行AWS CLI V1和V2

  19. 19

    r data.table在函数调用中的用法

  20. 20

    在R中的函数内向data.table添加新列

  21. 21

    data.table在R中逐行应用函数

  22. 22

    R的data.table找不到函数“。”

  23. 23

    R data.table用户定义函数

  24. 24

    FireBase sendMessage函数更新到v1 Google Cloud Endpoint

  25. 25

    Firebase Cloud Message 通过 HTTP v1 api 使用主题函数返回 400

  26. 26

    在data.table v1.8.10和v1.9.2中将非常小的数字(例如1e-28)和0.0分组

  27. 27

    data.table的包装函数

  28. 28

    data.table:j中的匿名函数

  29. 29

    在函数中使用data.table怪异行为

热门标签

归档