Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.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中具有反转值的行?_R_Delete Row_Inverse - Fatal编程技术网

如何删除R中具有反转值的行?

如何删除R中具有反转值的行?,r,delete-row,inverse,R,Delete Row,Inverse,我有一张由SNP差异的成对距离矩阵分解而成的表格。在第一列中,我有一对分离物,这是由矩阵列中的分离物编号与矩阵行中的分离物编号组合而成的,如下所示: Patients Method1 Method2 101_117 0 0 101_98 0 0 117_101 0 0 117_98 0 0 120_128 0 0 我想对这些数据进行后验分析,为此我想消除带有重复菌株对的行。然而,这些重复的分离物对是反向的,正

我有一张由SNP差异的成对距离矩阵分解而成的表格。在第一列中,我有一对分离物,这是由矩阵列中的分离物编号与矩阵行中的分离物编号组合而成的,如下所示:

Patients  Method1 Method2
101_117   0       0
101_98    0       0
117_101   0       0
117_98    0       0
120_128   0       0
我想对这些数据进行后验分析,为此我想消除带有重复菌株对的行。然而,这些重复的分离物对是反向的,正如我们可以看到的分离物101和117,它们在表中以对101_117和117_101的形式出现。因此,我只想保留其中的一对

基本命令
duplicated
unique
没有解决我的问题,因为重复对的名称是颠倒的。我也试着遵循另一个问题()中给出的建议,但无法让他们使用我的数据,因为我对R没有太多经验


有什么建议吗?提前谢谢你

您可以对
患者
进行排序,然后
重复的
应该可以工作

df$Patients <- sapply(df$Patients,function(x){
  paste(sort(as.numeric(unlist(strsplit(x, "_")))), collapse = "_")
}, USE.NAMES = F)

df <- df[!duplicated(df$Patients), ]
df$Patients我相信这会起作用(顺便说一句,在data.frames上也会起作用)

库(data.table)
图书馆(stringr)

DT可能在熔化前(将宽转换为长)在距离矩阵上使用
upper.tri
lower.tri
,这是最快的方法。
library(data.table)
library(stringr)
 DT <- fread("Patients  Method1 Method2
101_117   0       0
            101_98    0       0
            117_101   0       0
            117_98    0       0
            120_128   0       0")

DT[ !duplicated( lapply( stringr::str_extract_all( DT$Patients, "[0-9]+" ), sort ) ), ]

#    Patients Method1 Method2
# 1:  101_117       0       0
# 2:   101_98       0       0
# 3:   117_98       0       0
# 4:  120_128       0       0