R: создать кадр данных из списков, проверив набор ссылок - PullRequest
1 голос
/ 12 мая 2011

Моя коллега Саманта задала неясный вопрос, поэтому здесь я задаю здесь вопрос.У нее есть переменная goterms, содержащая все кадры данных для анализа.

goterms <- c('df1','df2','df3')

Переменная interestedGO содержит для каждого goterm списки с номерами ILMN.Таким образом, первый список содержит коды ILMN df1 и т. Д.

df1 <- c("ILMN_1665132", "ILMN_1691487", "ILMN_1716446", "ILMN_1769383",
         "ILMN_1772387", "ILMN_1783910", "ILMN_1784863")
df2 <- c("ILMN_1651599", "ILMN_1652693", "ILMN_1652825", "ILMN_1653324",
         "ILMN_1655595", "ILMN_1656057", "ILMN_1659077", "ILMN_1659923",
         "ILMN_1659947", "ILMN_1662322", "ILMN_1662619", "ILMN_1664565",
         "ILMN_1665132", "ILMN_1665738", "ILMN_1665859")
df3 <- c("ILMN_1661695", "ILMN_1665132", "ILMN_1716446", "ILMN_1737314",
         "ILMN_1772387", "ILMN_1784863", "ILMN_1796094", "ILMN_1800317",
         "ILMN_1800512", "ILMN_1807074")
interestedGO <- list(df1,df2,df3)

xx2 - это набор сравнения.Переменная xx2 содержит подмножество всех возможных номеров ILMN.

xx2 <- c("ILMN_1691487", "ILMN_1716446", "ILMN_1769383","ILMN_1832921")

x является своего рода набором ссылок.Переменная x содержит все возможные номера ILMN.

x <- c("ILMN_1665132", "ILMN_1691487", "ILMN_1716446", "ILMN_1769383", "ILMN_1772387",
       "ILMN_1783910", "ILMN_1784863","ILMN_1651599", "ILMN_1652693", "ILMN_1652825",
       "ILMN_1653324", "ILMN_1655595","ILMN_1656057", "ILMN_1659077", "ILMN_1659923",
       "ILMN_1659947", "ILMN_1662322","ILMN_1662619", "ILMN_1664565", "ILMN_1665132",
       "ILMN_1665738", "ILMN_1665859","ILMN_1661695", "ILMN_1665132", "ILMN_1716446",
       "ILMN_1737314", "ILMN_1772387","ILMN_1784863", "ILMN_1796094", "ILMN_1800317",
       "ILMN_1800512", "ILMN_1807074")

Со всеми этими переменными цель состоит в том, чтобы проверить для каждого goterm с соответствующими кодами ILMN, находятся ли они в наборе ссылок xx2.Чтобы проверить это, используется функция соответствия, и все совпадения дают 0, а соответствующие значения заменяются на 1. Чтобы дать удобный обзор всех экспериментов goterms, я хочу создать цикл, как показано ниже, чтопроверяет наличие каждого гена в наборе ссылок x.Окончательный результат должен быть data.frame, который сравнивает результаты каждого goterm в data.frame.

test <- list()
for (i in 1:length(goterms)) {
  goilmn <- as.data.frame(interestedGO[i])
  resultILMN <- match(goilmn[,1], xx2, nomatch=0)
  resultILMN[resultILMN!=0] <- 1
  result <- cbind(goilmn, resultILMN)
  colnames(result) <- c('x', 'result')

  zz <- merge(result, x, all=TRUE)
  zz[is.na(zz)] <- 0
  test[[i]] <- matrix(resultloop)
}

Окончательный результат будет выглядеть примерно так:

1  ILMN_1651599      0  0  0
2  ILMN_1652693      0  0  0
3  ILMN_1652825      0  0  0
4  ILMN_1653324      0  0  0
5  ILMN_1655595      0  0  0
6  ILMN_1656057      0  0  0
7  ILMN_1659077      0  0  0
8  ILMN_1659923      0  0  0
9  ILMN_1659947      0  0  0
10 ILMN_1661695      0  0  0
11 ILMN_1662322      0  0  0
12 ILMN_1662619      0  0  0
13 ILMN_1664565      0  0  0
14 ILMN_1665132      0  0  0
15 ILMN_1665132      0  0  0
16 ILMN_1665132      0  0  0
17 ILMN_1665738      0  0  0
18 ILMN_1665859      0  0  0
19 ILMN_1691487      0  0  1
20 ILMN_1716446      1  0  1
21 ILMN_1716446      1  0  1
22 ILMN_1737314      0  0  0
23 ILMN_1769383      0  0  1
24 ILMN_1772387      0  0  0
25 ILMN_1772387      0  0  0
26 ILMN_1783910      0  0  0
27 ILMN_1784863      0  0  0
28 ILMN_1784863      0  0  0
29 ILMN_1796094      0  0  0
30 ILMN_1800317      0  0  0
31 ILMN_1800512      0  0  0
32 ILMN_1807074      0  0  0

Кто-нибудь может мне с этим помочь?Спасибо!

1 Ответ

3 голосов
/ 12 мая 2011

Это у вас работает?

data.frame(code=x, sapply(interestedGO, function(curdf){
        ifelse(x %in% xx2, x %in% curdf, 0)
    }))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...