Преобразовать список в столбцы - PullRequest
0 голосов
/ 15 октября 2018

Мой список состоит из элементов, разделенных /, где только первый элемент содержит имя miR-.Я хотел бы вставить miR во все элементы после знака / и преобразовать список в таблицу или фрейм данных, где идентификаторы списка (2869, 10527 и т. Д.) И элементы списка расположены рядом друг с другом.

Список

$`2869`
[1] "miR-539/539-5p"    "miR-135ab/135a-5p"

$`10527`
 [1] "miR-128/128ab"                                                                            
 [2] "miR-129-5p/129ab-5p"                                                                      
 [3] "miR-142-3p"                                                                               
 [4] "miR-145"                                                                                  
 [5] "miR-153"                                                                                  
 [6] "miR-140/140-5p/876-3p/1244"

Вывод:

2869  miR-539
2869  miR-539-5p
2869  miR-135ab
2869  miR-135a-5p
10527 miR-128
10527 miR-128ab
10527 miR-129-5p
10527 miR-129ab-5p
10527 miR-142-3p
...

Пример вывода:

list(`6482` = c("miR-223", "miR-223", "miR-320abcd/4429", "miR-320abcd/4429", 
"miR-320abcd/4429", "miR-320abcd/4429", "miR-93/93a/105/106a/291a-3p/294/295/302abcde/372/373/428/519a/520be/520acd-3p/1378/1420ac", 
"miR-93/93a/105/106a/291a-3p/294/295/302abcde/372/373/428/519a/520be/520acd-3p/1378/1420ac", 
"miR-24/24ab/24-3p", "miR-24/24ab/24-3p", "miR-124/124ab/506", 
"miR-124/124ab/506", "miR-485-5p/1698/1703/1962", "miR-485-5p/1698/1703/1962", 
"miR-202-3p", "miR-202-3p", "miR-149", "miR-149", "miR-17/17-5p/20ab/20b-5p/93/106ab/427/518a-3p/519d", 
"miR-17/17-5p/20ab/20b-5p/93/106ab/427/518a-3p/519d", "let-7/98/4458/4500", 
"let-7/98/4458/4500", "miR-140/140-5p/876-3p/1244", "miR-140/140-5p/876-3p/1244"
), `4057` = c("miR-214/761/3619-5p", "miR-214/761/3619-5p"))

1 Ответ

0 голосов
/ 15 октября 2018

Мы можем использовать strsplit, чтобы хорошо разделить строки, разделенные \ и stack, чтобы преобразовать список в фрейм данных.Наконец, используйте gsub, чтобы поставить перед каждой строкой "miR-".

df <- stack(lapply(lst, function(x) unlist(strsplit(x, split = "/"))))
df$values <- gsub("^(miR-)?(.*)", "miR-\\2", df$values)
df
#           values  ind
#1         miR-223 6482
#2         miR-223 6482
#3     miR-320abcd 6482
#4        miR-4429 6482
#5     miR-320abcd 6482
#6        miR-4429 6482
# ...
.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...