如何比较行?

时间:2016-01-11 15:34:14

标签: r data.table bioconductor

我的数据如下: 我想将每行与下面的行进行比较,然后在每两行中得到相等数值。

   V1  V2  V3   V4  V5
1   3   2   2   3   3
2   2   2   0   2   3
3   2   3   2   2   0

我在下面编写了代码,但是我把它放在NA面前。

library(data.table)
data=as.data.frame(read.table("data.csv",header=TRUE))

findMatch <- function(i,n){
  tmp <- colSums(t(data[-(1:i),]) == unlist(data[i,]))
  tmp <- tmp[tmp > n]
  if(length(tmp) > 0)return(data.table(sample=rownames(data[i],duplicate=names(tmp),match=tmp))
  return(NULL)
}
tab <- rbindlist(lapply(1:(nrow(data)-1),findMatch,n=0))
tab

out put:

       sample duplicate match
 1:      1        NA    NA
 2:      1        NA    NA
 3:      2        NA    NA

我希望如此:

       sample duplicate match
 1:      1        2    2
 2:      1        3    1
 3:      2        3    2
  • 我想将所有行进行比较,这里我只显示了第1行和其他行。我喜欢为所有行做这件事。

0 个答案:

没有答案