сравнить несколько векторов разной длины, сосчитать одинаковые элементы и распечатать одинаковые и разные элементы - PullRequest
0 голосов
/ 17 мая 2018

У меня есть пять векторов следующего формата и различной длины. Векторы однонуклеотидных полиморфизмов (SNP)

A <- c("2179_39","2764_47","4521_24","9056_66")
B <- c("2478_39","2734_47","4531_24","2178_39","2734_47","4521_24")

В R я хотел бы: определить, какие SNP совпадают между различными векторами подсчитать количество совпадающих SNP распечатать, какие SNP не совпадают подсчитать количество SNP, которые не совпадают

Я нашел следующий скрипт, который распечатывает места, где совпадают векторы, но я пробовал в нем кучу функций печати и длины, и я не могу получить то, что действительно хочу от него. Я также хотел бы пройтись по всем пяти векторам (т. Е. A против B, A против C, A против D, A против E и т. Д.), Если это возможно.

foo <- function(A,B){
  if (!isTRUE(all.equal(A,B))){
    mismatches <- paste(which(A != B), collapse = ",")
    stop(mismatches )
  } else {
    message("Yahtzee!")
  }
}

foo(A,B)

Был бы полезен любой совет, даже просто сайт, на который можно посмотреть, чтобы помочь мне интегрировать функции печати и длины.

Элла

1 Ответ

0 голосов
/ 17 мая 2018
compare.SNPs <- function(A, B) {
  # consider only unique names
  A.u <- unique(A)
  B.u <- unique(B)
  common.A.B <- intersect(A.u, B.u)
  diff.A.B <- setdiff(A.u, B.u)
  diff.B.A <- setdiff(B.u, A.u)
  uncommon.A.B <- union(diff.A.B, diff.B.A)
  cat(paste0("The sets have ", length(common.A.B), " SNPs in common:"))
  print(common.A.B)
  print(paste0("The sets have ", length(uncommon.A.B), " SNPs not in common:"))
  print(paste0("In the first set, but not in the second set:"))
  print(diff.A.B)
  print(paste0("Not in the first set, but in the second set:"))
  print(diff.B.A)

}

compare.SNPs(A, B)

The sets have 1 SNPs in common:[1] "4521_24"
[1] "The sets have 7 SNPs not in common:"
[1] "In the first set, but not in the second set:"
[1] "2179_39" "2764_47" "9056_66"
[1] "Not in the first set, but in the second set:"
[1] "2478_39" "2734_47" "4531_24" "2178_39"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...