【发布时间】:2019-12-05 14:45:36
【问题描述】:
我有下面的例子
a <- c("a","b","c","d","e","f")
b <- 1:6
c <- c("a","E","D","C","B","A")
d <- 10:15
dt1 <- data.table("ID" = b,"code_a" = a,"code_c" = c, "code_d" = d)
dt2 <- data.table("ID" = b, "code_c" = c, "code_d" = d )
dt3 <- data.table("ID" = b, "code_d" = d)
merged_list <- list(dt1,dt2,dt3)
output <- merged_list[[1]][merged_list[[1]][,2] != merged_list[[1]][,3]]
错误测试如下:
[.data.table(merged_list[[1]]、merged_list[[1]][, 2] != merge_list[[1]][, 中的错误: i 是无效类型(矩阵)。也许将来一个 2 列矩阵可以返回 DT 的元素列表(本着 FAQ 2.14 中的 A[B] 的精神)。如果您愿意,请向 data.table 问题跟踪器报告,或将您的 cmets 添加到 FR #657。
这里我想得到merged_list 中第一项的输出,这是一个data.table,但在给定条件下data.table 中的第二项不能等于data.table 中的第三项
我不确定为什么上述方法不起作用,但如果我使用 $code_a 和 $code_c 而不是 [,2] 和 [,3] 它会起作用。我不想使用$ 引用,因为它在循环中不能很好地工作。
预期输出:
output
# ID code_a code_c code_d
# 1: 2 b E 11
# 2: 3 c D 12
# 3: 4 d C 13
# 4: 5 e B 14
# 5: 6 f A 15
因为只有第一行的code_a 等于code_c,所以它被删除了。谢谢您的帮助。我在这里的主要目标是不使用$code_a,因为我不能把它放在一个for循环中,这给了我code_a、code_b、code_c等等等等。对我做错了什么以及如何解决的任何帮助非常感谢这个问题。抱歉标题没有提供信息,我不确定这种问题是什么。
【问题讨论】:
标签: r data.table