我有两个相当长的列表(都是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)
您显示的所有功能都不能很好地与列表或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)