[英]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_a
, code_b
, code_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.