Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在data.table的列表中标识相同的列表(作为变量)_R_List_Data.table_Unique - Fatal编程技术网

R 在data.table的列表中标识相同的列表(作为变量)

R 在data.table的列表中标识相同的列表(作为变量),r,list,data.table,unique,R,List,Data.table,Unique,我将数据排列在data.table中,并创建了livar列,该列包含一个列表,有时包含一个列表。每行代表一个唯一记录的多个记录。列livar汇总列表中唯一记录的变量(不再在data.table中)的所有观察值,或者当一条记录有多个条目时,在列表中 我现在想检查livar列中一行的所有列表是否相同。在提供的代码中,我希望相同列中的第一行是FALSE,第二行和第三行是TRUE。正如以下几行所示,代码按照我的预期工作,但不在data.table上下文中。有人能帮忙吗 a <- c(123456,

我将数据排列在
data.table
中,并创建了
livar
列,该列包含一个列表,有时包含一个列表。每行代表一个唯一记录的多个记录。列
livar
汇总列表中唯一记录的变量(不再在
data.table
中)的所有观察值,或者当一条记录有多个条目时,在列表中

我现在想检查
livar
列中一行的所有列表是否相同。在提供的代码中,我希望
相同
列中的第一行是
FALSE
,第二行和第三行是
TRUE
。正如以下几行所示,代码按照我的预期工作,但不在
data.table
上下文中。有人能帮忙吗

a <- c(123456, NA, 456789, NA, NA)
b <- c(NA, NA)
c <- c(123456, NA, 987654, NA, NA)
d <- c(123456, NA, 987654, NA, NA)
e <- c(NA, NA)

li1 <- list(a, b)
li2 <- list(c, d)

DT <- data.table(c(1,2,3))
DT[, livar := list(li1, li2, e)]
DT[, same := length(unique(livar))==1] # FALSE

length(unique(li1))==1 # FALSE
length(unique(li2))==1 # TRUE
length(unique(e))==1 # TRUE
length(unique(c(NA, NA)))==1 # TRUE

aAs
chinsoon12
指出,为了进入列表的每个列表,下一行中缺少一个*apply

DT[, same := sapply(livar, function(x) length(unique(x))==1L)]

只是缺少一个
*应用
DT[,相同:=sapply(livar,函数(x)长度(唯一(x))==1L)]
啊,太完美了!谢谢。我错过了这个代码行,你的livar列是一个列表。您可以进入列表的每个列表,对于每个列表(即a
sapply
),您可以检查是否只有一个唯一的VectorRific,非常感谢!