我有两个相当长的列表(都是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)
我认为我的代码是正确的,但我的问题是上面代码的结果并没有产生我需要的东西。例如,对于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
我对RData
文件没什么经验,所以不确定这是不是问题......
使用varsg[1:10,]
:
[1] exm2268640 exm41 exm1916089 exm44 exm46 exm47
[7] exm51 exm53 exm55 exm56
232334 Levels: exm1000006 exm1000025 exm1000032 exm1000038 ... rs999943
答案 0 :(得分: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
我建议您通过执行以下操作切换到矢量:
varss <- unlist(varss)
varsg <- unlist(varsg)