【问题标题】:Modifying in place with a conditional using data.table使用 data.table 使用条件进行就地修改
【发布时间】:2019-08-01 18:03:01
【问题描述】:

这是一个“我如何在 data.table 中做这个基于 R 的事情”类型的问题。我的目标是根据某些条件为列分配一个值。我通常如何在基础 R 中执行此操作如下。我的问题是这通常如何在 data.table 中完成:

library(data.table)

iris$Sepal.Length[iris$Sepal.Width > 3] <- NA

irisDT <- as.data.table(iris)

irisDT$Sepal.Length[Sepal.Width > 3] <- NA
#> Error in irisDT$Sepal.Length[Sepal.Width > 3] <- NA: object 'Sepal.Width' not found

reprex package (v0.3.0) 于 2019-08-01 创建

【问题讨论】:

  • 是的,这是 100%。谢谢。
  • 这是答案:irisDT[Sepal.Width &gt; 3, Sepal.Length := NA]。 @DavidKlotz 你想添加它以便我接受吗?
  • 一般来说,试着习惯用 data.table 在[] 内做所有事情。我有时认为[ 让您在使用]“退出”之前“进入”数据以进行一些处理。
  • @boshek 将您的想法拆分为是否使用 := 可能会有所帮助...在这里,首先评估 i 然后这些行可供 j 使用

标签: r data.table


【解决方案1】:

查看data.tables documentation,特别是第 2b 节以进行就地修改。

我愿意:

irisDT[Sepal.Width > 3, Sepal.Length := NA_real_]

【讨论】:

    猜你喜欢
    • 2018-06-18
    • 2012-10-26
    • 2020-01-08
    • 2020-02-01
    • 2014-03-02
    • 2020-07-01
    • 2021-05-03
    • 2014-12-11
    • 2019-04-14
    相关资源
    最近更新 更多