data.table:wrapup期间出错:内部错误:NA存在于';行';传递给C赋值
好吧,这对我昨天的工作很好。今天,我对这个data.table有以下问题。我不知道我做错了什么或改变了什么来获得这种行为:data.table:wrapup期间出错:内部错误:NA存在于';行';传递给C赋值,r,data.table,R,Data.table,好吧,这对我昨天的工作很好。今天,我对这个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
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会话已损坏,所以我提出了一个新会话,它也失败了
谢谢你抽出时间
(对不起,伙计们,我是第一次使用这个网站,所以我不应该把下面的内容放在评论部分)
建议使用……[,订单类型:-类型]
这里是:与上面相同的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 ]
这不管用。两天前的晚上,我似乎(或认为)我做了以下工作:
>dtable[tif][index][,"order_type"] = type
但现在我得到了一个错误:
内部错误:NA存在于传递给C assign的“行”中
在处理了一段时间之后,我很惊讶用
[grep(pattern,dtable[tif][,get(cn)]]的工作原理应该是一样的。因此,这让我抓挠我的头回到原来的问题上面的方式
大约一个月前我才开始使用data.table。这对我来说是巨大的优势和巨大的推动,但我也遇到了一些奇怪的怪癖,比如这个。所以我最终认为我应该把这篇文章发布出来,看看我做错了什么,或者我是否以一种非预期的方式使用了data.table
完全忘了提到,我使用的是R3.0
谢谢大家
dtable[tif][index][,"order_type"] = type
如果数据表中没有名为“index”的列,则此选项将起作用。否则,“索引”将作为列值计算,在本例中为(2,4,6),它不会引用dtable[tif]中的有效行号
如果数据表中没有名为“index”的列,则此选项将起作用。否则,“index”将作为列值进行计算,在本例中是(2,4,6),它不会引用dtable[tif]中的有效行号。我不知道您在做什么,但我想您希望在表达式的末尾使用此值:
…[,order\u type:=type]
是的,这是我最初做的,它什么也没做。这就是为什么我用最后一种方式展示它。仅供参考,我确实有:dtable[tif][index,order_type:=type]没有骰子。尝试了不同的组合。谢谢你的回复。什么都不做,我的意思是order_type列没有改变,从初始化时就保留了所有NA。试着分离出一个可重复的示例:与上面相同的dtable。我将exmaple留在记忆中,上面的参数与我相同。>数据表[tif][grep(pattern,dtable[tif][,get(cn)]][,order_type][1]NA NA数据表[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.编辑您的问题以包括这些示例。在注释中很难理解我不知道你在做什么,但我想你希望在表达式的末尾有这样的内容:…[,order\u type:=type]
是的,那是我最初做的,它什么也没做。这就是为什么我用最后一种方式展示它。仅供参考,我确实有:dtable[tif][index,order_type:=type]没有骰子。尝试了不同的组合。谢谢你的回复。什么都不做,我的意思是order_type列没有改变,从初始化时就保留了所有NA。试着分离出一个可重复的示例:与上面相同的dtable。我将exmaple留在记忆中,上面的参数与我相同。>数据表[tif][grep(pattern,dtable[tif][,get(cn)]][,order_type][1]NA NA数据表[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.编辑您的问题以包括这些示例。在评论中很难理解