R中的data.table和base - `|` 的含义是什么?

3

我在 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,然后我不确定正在发生什么....

|是什么作用?

1个回答

1
在第一行中,


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

我们在.SDcols中指定感兴趣的列,即agg(可能是具有多个列的对象名称)。
然后使用Reduce获取数据表子集(.SD)的逐行总和(+)。
在第二步中,将列“AGG”复制以创建“AGG_NEW”。
sample[, AGG_NEW := AGG]

然后我们传递一个索引,即在中的行序列(不确定为什么需要它),然后创建“val”作为逻辑向量。
即使没有“subset”,代码也应该可以工作,因为所显示的“subset”是原始数据集的完整行序列。
sample[,  val := (AGG_NEW >= (value) - 1)) | val ]

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


1
假设 val 是布尔值 FALSE。这意味着只有当 (AGG_NEW >= (value) - 1)) 为真时,val 才会被设置为 TRUE,对吗? - Nneka
@Nneka 是的,没错。|选项是为了确保已经存在的TRUE保持不变。 - akrun
那些已经存在的TRUE仍然保持为TRUE吗?我不确定我是否理解正确了... - Nneka
@Nneka 假设您有 v1 <- c(TRUE, FALSE, FALSE); v2 <- c(2, 3, 2); v1|(v2 > 2) - akrun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接