Есть ли эквивалент RIX-команды unix в R? - PullRequest
1 голос
/ 10 марта 2011

У меня есть один главный файл со списком уникальных идентификаторов, и я хочу выровнять три файла с подмножествами идентификаторов вместе с этим: Столбец 1 (id1, id2, id3, id4 и т. Д.) Столбец 2 (пробел, id2, пробел, пробел) Столбец 3 (id1, id2, пробел) Столбец 4 (id1, пробел id3 пробел) и т. Д. У меня есть уникальный список в R, и команда "comm" в unix, кажется, делает это - есть ли эквивалент в R?

1 Ответ

3 голосов
/ 10 марта 2011

Структура ваших данных не очень ясна, но если вы начнете со следующих векторов:

R> master <- paste("id",1:10,sep="")
R> sub1 <- paste("id",c(2,3,5),sep="")
R> sub2 <- paste("id",c(1,4,8,9),sep="")
R> master
[1] "id1"  "id2"  "id3"  "id4"  "id5"  "id6"  "id7"  "id8"  "id9"  "id10"
R> sub1
[1] "id2" "id3" "id5"
R> sub2
[1] "id1" "id4" "id8" "id9"

Вы можете создать фрейм данных из вашего master списка идентификаторов,и используйте эти идентификаторы в качестве имен строк:

R> df <- data.frame(master=master, row.names=master)
R> df
     master
id1     id1
id2     id2
id3     id3
id4     id4
id5     id5
id6     id6
id7     id7
id8     id8
id9     id9
id10   id10

Затем вы можете добавить новые столбцы для каждого подмножества следующим образом:

R> df[sub1, "sub1"] <- sub1
R> df[sub2, "sub2"] <- sub2

со следующим результатом:

R> df
     master sub1 sub2
id1     id1 <NA>  id1
id2     id2  id2 <NA>
id3     id3  id3 <NA>
id4     id4 <NA>  id4
id5     id5  id5 <NA>
id6     id6 <NA> <NA>
id7     id7 <NA> <NA>
id8     id8 <NA>  id8
id9     id9 <NA>  id9
id10   id10 <NA> <NA>
...