R datatable:eval parse function

时间:2018-06-14 13:44:22

标签: r statistics data.table

我在R为我的大学做作业,我需要一些帮助,因为我实际上无法向前推进。

我有一个小宠物的数据表。想象一下,你有一组典型的数据:

 Pokemon     Type          PP         Evolution    Beat_Ditto
Bulbasaur    Sheet         50            1         Null
...
Charmander    Fire         54            1         Null
...
Raichu        electric    200            2         Null
...
Dragonite     Dragon      320            3         Null
...

我希望通过evolution过滤这个数据表,但接下来要做更多其他事情。所以,我做了一句如下的话:

eval(parse(sentence))

句子是

"pokemons[type %in% c('Dragon','psychic') & evolution %in% c(2,3), Beat_Ditto := 1, , Beat_Mewtwo := 0]" 

我的问题是,当我执行命令eval(解析(句子))时,R说:

Error in `:=`(Beat_Mewtwo, 1) : 
  Check that is.data.table(DT) == TRUE. Otherwise, := and `:=`(...) are defined for use in j, once only and in particular ways. See help(":="). 

pokemons是一个数据表,数据表与过去一样。那么,有人可以帮助我吗?

由于

1 个答案:

答案 0 :(得分:0)

它解决了。对不起,我写的data.table错了。我没有尝试只修改一列。我的原始句子就像

"pokemons[type %in% c('Dragon','psychic') & evolution %in% c(2,3), Beat_Ditto := 1, Beat_Mewtwo := 0]"

这句话没有用,因为我试图用一句话修改两列。在这种情况下,我发现我必须做类似的事情:

"pokemons[type %in% c('Dragon','psychic') & evolution %in% c(2,3), c('Beat_Ditto', 'Beat_Mewtwo') := c(1,0)]"

这句话有效。谢谢你的帮助