【问题标题】:data.table and base in R - meaning of `|`R中的data.table和base - `|`的含义
【发布时间】:2020-04-17 00:43:30
【问题描述】:

我在 R 中遇到了一个我很难理解的命令,也许有人可以启发我?

sample[, AGG := Reduce(`+`, .SD), .SDcols = agg]
  sample[, AGG_NEW := AGG]
subset = seq_len(nrow(sample))
sample[subset, val := (AGG_NEW >= (value) - 1)) | val ]

到目前为止,我的解释是这样的:

从 data.table sample 获取所有行 subset(已定义),在这些行中改变列 val 然后我不确定发生了什么......

| 有什么作用?

【问题讨论】:

    标签: r dataframe data.table base


    【解决方案1】:

    在第一行,

    library(data.table)
    sample[, AGG := Reduce(`+`, .SD), .SDcols = agg]
    

    我们在.SDcols中指定感兴趣的列,即agg(可能是一个多列的对象名),

    然后使用Reduce 得到Data.table (.SD) 的子集的行和(+)。

    在第二步中,复制列'AGG'以创建'AGG_NEW',

    sample[, AGG_NEW := AGG]
    

    然后我们传递一个索引,即i 中的行序列(不知道为什么这里需要它),然后将“val”创建为逻辑向量

    即使没有“子集”,代码也应该可以工作,因为“子集”显示的是原始数据集行的完整序列

    sample[,  val := (AGG_NEW >= (value) - 1)) | val ]
    

    | 表示 OR 运算符,即满足 lhs 或 rhs 条件,则返回 TRUE 否则为 FALSE

    【讨论】:

    • 可以说val 是布尔值FALSE。这意味着只有当(AGG_NEW >= (value) - 1)) 为真时,val 才会设置为TRUE,对吗?
    • @Nneka 是的,没错。 | 选项是为了确保已经存在的 TRUE 保持 TRUE
    • 已经存在的 TRUE 仍然是 TRUE?我不确定我是否理解正确...
    • @Nneka 假设你有v1 <- c(TRUE, FALSE, FALSE); v2 <- c(2, 3, 2); v1|(v2 > 2)
    猜你喜欢
    • 2011-06-25
    • 1970-01-01
    • 2013-01-19
    • 1970-01-01
    • 2021-11-28
    • 2020-08-29
    • 2018-07-12
    • 2020-01-25
    • 2020-10-01
    相关资源
    最近更新 更多