比较两个列表[R]

use*_*449 5 r match

我有两个相当长的列表(都是232000行).当尝试使用两者运行分析时,R给出了一个错误,即一个列表中的某些元素不在另一个列表中(对于要运行的特定代码,两个列表都必须完全相同).我已经做了以下尝试和解读这个:

#In Both
both <- varss %in% varsg
length(both)

#What is in Both
int <- intersect(varss,varsg)
length(int)

#What is different in varss
difs <- setdiff(varss,varsg)
length(difs)

#What is different in varsg
difg <- setdiff(varsg,varss)
length(difg)
Run Code Online (Sandbox Code Playgroud)

我认为我的代码是正确的,但我的问题是上面代码的结果并没有产生我需要的东西.例如,因为both <- varss %in% varsg我只得到一个FALSE.我的列表是否需要在特定的类中才能使其正常工作?我试过了data.frame,list而且character.不确定是否function需要应用任何重要的东西.

只是为了提供一些关于我的清单的更多信息,两者都是SNP名称列表(遗传数据)

编辑:

我已经加载了这两个文件readRDS(),但不确定这是否会导致一些问题.当试图使用varss[1:10,]我得到以下信息:

 [1] rs41531144 rs41323649 exm2263307 rs41528348 exm2216184 rs3901846 
 [7] exm2216185 exm2216186 exm2216191 exm2216198
232334 Levels: exm1000006 exm1000025 exm1000032 exm1000038 ... rs9990343
Run Code Online (Sandbox Code Playgroud)

我对RData文件的经验很少,所以不确定这是不是问题......

使用时也是如此varsg[1:10,]:

 [1] exm2268640 exm41      exm1916089 exm44      exm46      exm47     
 [7] exm51      exm53      exm55      exm56     
232334 Levels: exm1000006 exm1000025 exm1000032 exm1000038 ... rs999943 
Run Code Online (Sandbox Code Playgroud)

flo*_*del 6

您显示的所有功能都不能很好地与列表或data.frames一起使用,例如:

varss <- list(a = 1:8)
varsg <- list(a = 2:9)

both <- varss %in% varsg
both
# [1] FALSE

#What is in Both
int <- intersect(varss,varsg)
int
# list()

#What is different in varss
difs <- setdiff(varss,varsg)
difs
# [[1]]
# [1] 1 2 3 4 5 6 7 8

#What is different in varsg
difg <- setdiff(varsg,varss)
difg
# [[1]]
# [1] 2 3 4 5 6 7 8 9
Run Code Online (Sandbox Code Playgroud)

我建议您通过执行以下操作切换到向量:

varss <- unlist(varss)
varsg <- unlist(varsg)
Run Code Online (Sandbox Code Playgroud)