さて、これは昨日私が持っている機能でうまくいきました。今日、このdata.tableで次の問題が発生しています。この動作を得るために何を間違えたのか、または変更したのかわかりません。
dtable
TIF VENUE duration TYPE1 TYPE2 TYPE3 TYPE4 index order_type
1: DAY NA 1.3e+07 NA M:0 NA NA 2 NA
2: DAY NA 2.0e+06 NA M:0 NA NA 4 NA
3: DAY NA 8.9e+07 NA M:0 NA NA 6 NA
4: IOC NA 0.0e+00 NA NA NA NA 1 NA
5: IOC NA 0.0e+00 NA NA NA NA 3 NA
6: IOC NA 0.0e+00 NA NA NA NA 5 NA
Classes:
TIF VENUE duration TYPE1 TYPE2 TYPE3 TYPE4 index order_type
"factor" "factor" "numeric" "factor" "factor" "factor" "factor" "integer" "character"
cn = "TYPE2"
pattern = "M:?\\n*\\.?\\n*"
tif = "DAY"
> type
[1] mid-peg
Levels: ERROR? GTC? far-peg far-peg ping limit limit ping mid-peg mid-peg ping near-peg near-peg ping
index = grep(pattern, dtable[tif][, get(cn)])
index
> [1] 1 2 3
これは失敗します:
dtable[tif][index][,"order_type"] = type
**Error during wrapup: Internal error: NA exist in 'rows' passed to C assign**
これは機能します:
dtable[tif][grep(pattern, dtable[tif][, get(cn)])][,"order_type"] = type
> dtable
TIF VENUE duration TYPE1 TYPE2 TYPE3 TYPE4 index order_type
1: DAY NA 1.3e+07 NA M:0 NA NA 2 mid-peg
2: DAY NA 2.0e+06 NA M:0 NA NA 4 mid-peg
3: DAY NA 8.9e+07 NA M:0 NA NA 6 mid-peg
4: IOC NA 0.0e+00 NA NA NA NA 1 NA
5: IOC NA 0.0e+00 NA NA NA NA 3 NA
6: IOC NA 0.0e+00 NA NA NA NA 5 NA
私は何を台無しにしていますか?
R セッションが壊れていると思ったので、新しいセッションを開始しましたが、同様に失敗しました。
お時間をいただきありがとうございます。
(申し訳ありませんが、このサイトを初めて使用するので、コメント セクションに次の内容を入力するべきではありませんでした) ....[,order_type :- type ] を使用する提案について
ここにあります: 上記と同じ dtable。上記と同じパラメーターを使用して、例をメモリに残しました。
>dtable[tif][grep(pattern, dtable[tif][, get(cn)])][,order_type]
[1] NA NA NA
>dtable[tif][grep(pattern, dtable[tif][, get(cn)])][,order_type := type ]
>dtable[tif][grep(pattern, dtable[tif][, get(cn)])][,order_type]
[1] NA NA NA
> type [1] mid-peg.
[1] mid-peg
Levels: ERROR? GTC? far-peg far-peg ping limit limit ping mid-peg mid-peg ping near-peg near-peg ping
後でこれを行うと、動作します:
> dtable[tif][grep(pattern, dtable[tif][, get(cn)])][,"order_type"] = type
> dtable[tif][grep(pattern, dtable[tif][, get(cn)])][,order_type]
[1] "mid-peg" "mid-peg" "mid-peg"
これが奇妙に見える場合は、お詫び申し上げます。私が最初にこのすべてを始めたとき、私は最初に試しました:
>index = grep(pattern, dtable[tif][, get(cn)])
>dtable[tif][index][,order_type := type ]
これはうまくいきませんでした。私は2晩前に次のように働いていたようです(または考えました):
>dtable[tif][index][,"order_type"] = type
しかし今、私はエラーを受け取ります: 内部エラー: NA が C の割り当てに渡された「行」に存在します
しばらくこれをいじった後、 [index] を [grep(pattern, dtable[tif][, get(cn)])] に置き換えても同じはずなのに驚いた。そのため、上記の元の問題に頭を悩ませました。
約1か月前にdata.tableを使い始めました。それは私にとって大きな利点であり、大きな後押しでしたが、私が遭遇した奇妙な癖がいくつかあります。だから私は最終的に、私が間違っていること、または意図しない方法で data.table を使用しているかどうかを確認するために、これを投稿する必要があると考えました。
すっかり言い忘れていましたが、R3.0を使っています ありがとうございます。