繁体   English   中英

与引用某些对象相关的 r 中的 data.table 错误

[英]data.table error in r related to referencing certain objects

我有以下例子

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] !=merged_list[[1]][, : i is invalid type (matrix)) 中的错误。也许将来会有 2 列matrix 可以返回 DT 的元素列表(本着 FAQ 2.14 中 A[B] 的精神)。如果您愿意,请向 data.table 问题跟踪器报告,或将您的评论添加到 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_acode_bcode_c等等。对我做错了什么以及我如何解决这个问题的任何帮助都非常感谢。 很抱歉没有提供信息的标题,我不确定这种问题是什么。

是的,因为错误消息表明比较返回一个矩阵。

merged_list[[1]][,2] != merged_list[[1]][,3]
#     code_a
#[1,]  FALSE
#[2,]   TRUE
#[3,]   TRUE
#[4,]   TRUE
#[5,]   TRUE
#[6,]   TRUE

class(merged_list[[1]][,2] != merged_list[[1]][,3])
#[1] "matrix"

把它变成一个向量,它应该可以工作

merged_list[[1]][c(merged_list[[1]][,2] != merged_list[[1]][,3])]

#   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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM