関数内から:=で割り当てられたdata.tableオブジェクトは出力されません

janosdivenyi

data.table関数内を変更したいのですが。:=関数内でこの機能を使用すると、結果は2回目の呼び出しでのみ出力されます。

次の図を見てください。

library(data.table)
mydt <- data.table(x = 1:3, y = 5:7)

myfunction <- function(dt) {
    dt[, z := y - x]
    dt
}

関数のみを呼び出すと、テーブルは印刷されません(これは標準の動作です。ただし、返さdata.tableれたオブジェクトを新しいオブジェクトに保存すると、最初の呼び出しでは印刷されず、2番目の呼び出しでのみ印刷されます。

myfunction(mydt)  # nothing is printed   
result <- myfunction(mydt) 
result  # nothing is printed
result  # for the second time, the result is printed
mydt                                                                     
#    x y z
# 1: 1 5 4
# 2: 2 6 4
# 3: 3 7 4 

なぜこれが起こるのか、そしてそれを防ぐ方法を説明できますか?

janosdivenyi

デビッドArenburgがに言及したコメント、答えを見つけることができるここにバージョン1.9.6で修正されたバグがありましたが、修正によりこの欠点が導入されました。

DT[]この動作を防ぐには、関数の最後で呼び出す必要があります

myfunction <- function(dt) {
    dt[, z := y - x][]
}
myfunction(mydt)  # prints immediately
#    x y z
# 1: 1 5 4
# 2: 2 6 4
# 3: 3 7 4 

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

関数内で割り当てられた関数から複数のオブジェクトを返す

分類Dev

TypeError:関数から呼び出された場合、nullはオブジェクトではありません

分類Dev

コンパニオンオブジェクトから割り当てられた静的な最終値は注釈では許可されていません

分類Dev

TLABで割り当てられたオブジェクトは、割り当て後に共有されますか?

分類Dev

オブジェクトから抽出された値は、異なる順序で割り当てられます

分類Dev

動的に割り当てられたオブジェクトが初期化されていません

分類Dev

関数内で動的に割り当てられた構造体

分類Dev

関数から返されたIEnumerable <MovingAverage>値を別のオブジェクトに割り当てます

分類Dev

スタックまたはヒープに割り当てられた「新規」を使用せずに割り当てられたオブジェクトです

分類Dev

「overlay」は「namespace:sp」からエクスポートされたオブジェクトではありません

分類Dev

光沢のある出力オブジェクトからオブジェクトを読み取ることは許可されていませんか?

分類Dev

viewDidLoadの外部で割り当てられ初期化されたオブジェクトを使用していますか?

分類Dev

関数変数内で割り当てられた値は常に空です

分類Dev

関数で宣言されたグローバルオブジェクトは、他の関数からはアクセスできません

分類Dev

関数で宣言されたグローバルオブジェクトは、他の関数からはアクセスできません

分類Dev

関数で宣言されたグローバルオブジェクトは、他の関数からはアクセスできません

分類Dev

非同期関数から返されたオブジェクトを取得できません

分類Dev

では、スタックに割り当てられたオブジェクトで仮想関数を使用できますか?

分類Dev

C ++オブジェクトはstd :: moveされませんか?

分類Dev

malloc:***オブジェクト0x00のエラー:解放されるポインターが割り当てられませんでした

分類Dev

Angular $ scopeオブジェクトが割り当てられていません

分類Dev

オブジェクトが割り当てられていません。

分類Dev

関数からの複数の出力を使用する場合、長さが指定されていない遅延オブジェクトは反復可能なエラーではありません

分類Dev

JSDocにオブジェクトプロパティに割り当てられた無名関数を認識させるにはどうすればよいですか?(サンプルコードが含まれています)

分類Dev

動的に割り当てられたオブジェクト内の動的割り当て

分類Dev

基本クラスで割り当てられたオブジェクトは子クラスを変更しません

分類Dev

関数によって返されるオブジェクトが変数に割り当てられている場合、その変数はその場でコピーまたは作成されますか?

分類Dev

Nativescript Angular: 関数内からオブジェクトを読み取れません (これは未定義ですか?)

分類Dev

静的オブジェクトから制御が割り当てられている場合、画像は表示されません

Related 関連記事

  1. 1

    関数内で割り当てられた関数から複数のオブジェクトを返す

  2. 2

    TypeError:関数から呼び出された場合、nullはオブジェクトではありません

  3. 3

    コンパニオンオブジェクトから割り当てられた静的な最終値は注釈では許可されていません

  4. 4

    TLABで割り当てられたオブジェクトは、割り当て後に共有されますか?

  5. 5

    オブジェクトから抽出された値は、異なる順序で割り当てられます

  6. 6

    動的に割り当てられたオブジェクトが初期化されていません

  7. 7

    関数内で動的に割り当てられた構造体

  8. 8

    関数から返されたIEnumerable <MovingAverage>値を別のオブジェクトに割り当てます

  9. 9

    スタックまたはヒープに割り当てられた「新規」を使用せずに割り当てられたオブジェクトです

  10. 10

    「overlay」は「namespace:sp」からエクスポートされたオブジェクトではありません

  11. 11

    光沢のある出力オブジェクトからオブジェクトを読み取ることは許可されていませんか?

  12. 12

    viewDidLoadの外部で割り当てられ初期化されたオブジェクトを使用していますか?

  13. 13

    関数変数内で割り当てられた値は常に空です

  14. 14

    関数で宣言されたグローバルオブジェクトは、他の関数からはアクセスできません

  15. 15

    関数で宣言されたグローバルオブジェクトは、他の関数からはアクセスできません

  16. 16

    関数で宣言されたグローバルオブジェクトは、他の関数からはアクセスできません

  17. 17

    非同期関数から返されたオブジェクトを取得できません

  18. 18

    では、スタックに割り当てられたオブジェクトで仮想関数を使用できますか?

  19. 19

    C ++オブジェクトはstd :: moveされませんか?

  20. 20

    malloc:***オブジェクト0x00のエラー:解放されるポインターが割り当てられませんでした

  21. 21

    Angular $ scopeオブジェクトが割り当てられていません

  22. 22

    オブジェクトが割り当てられていません。

  23. 23

    関数からの複数の出力を使用する場合、長さが指定されていない遅延オブジェクトは反復可能なエラーではありません

  24. 24

    JSDocにオブジェクトプロパティに割り当てられた無名関数を認識させるにはどうすればよいですか?(サンプルコードが含まれています)

  25. 25

    動的に割り当てられたオブジェクト内の動的割り当て

  26. 26

    基本クラスで割り当てられたオブジェクトは子クラスを変更しません

  27. 27

    関数によって返されるオブジェクトが変数に割り当てられている場合、その変数はその場でコピーまたは作成されますか?

  28. 28

    Nativescript Angular: 関数内からオブジェクトを読み取れません (これは未定義ですか?)

  29. 29

    静的オブジェクトから制御が割り当てられている場合、画像は表示されません

ホットタグ

アーカイブ