r - 比较两个列表 [R]

标签 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)

我认为我的代码是正确的,但我的问题是上面代码的结果没有产生我需要的结果。例如,对于 both <- varss %in% varsg我只得到一个FALSE 。我的两个列表是否都需要属于特定类别才能正常工作?我试过data.frame , listcharacter 。不确定是否有像 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 

最佳答案

您展示的所有功能都不能很好地与列表或 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)

关于r - 比较两个列表 [R],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23353067/

相关文章:

r - 扫帚的替代品::整洁?

r - ggplot2,将两个比例应用于同一个图?自上而下的条形图

javascript - 为什么 ("a"中的 ["a","b"]) 产生假,而 (1 in [1,2]) 产生真?

r - 等效于 R 中 Excel 中的索引匹配

php - 比较php中的两个字符串并显示字符差异

r - 按列快速串联数千个文件

R:从推荐实验室包中获取客户购买前 N 件商品的概率

r - 根据大于或小于前一列中的条件,向 R 中的数据框添加一列

java - 打印与数组中的数字匹配的字符串

javascript 正则表达式 匹配 ^[^#]?