L oop в списке элементов в R - PullRequest
0 голосов
/ 27 апреля 2020

Я новичок в науке о данных, и я пытаюсь кое-что сделать, и мне нужно очень много времени, чтобы понять. У меня есть список из 6600 элементов списка, которые содержат вектор символов разной длины (кодоны). У каждого списка есть имя, соответствующее определенному гену.

Список выглядит так:

GenesSplitted_________list[6600]_______List of length 6600
_____YBOR24W__________list[330]________Liost of length 330

и т. Д.

Каждый элемент списка выглядит например,

GeneSplitted[[1]]

[[1]]
[1] "ATG"

[[2]]
[1] "TTG"

[[3]]
[1] "AAT"

[[4]]
[1] "AGT"

[[5]]
[1] "TCA

и т. д.

Задача состоит в том, чтобы применить al oop ion, где я могу преобразовать каждый элемент списка во фреймы данных. Когда я извлекаю один элемент списка и применяю этот код, он, кажется, работает:

a <- as.matrix(GenesSplitted[[1]]) #first element of the list into matrix
a <- as.data.frame(Gene1) #transformed into dataframe
a$transcript <- df[1,1] # assign a new column named 
                        # transcript with the name 
                        # indicated in another data frame 
                        # with the gene name

Когда я делаю этот код, я получаю то, что ожидаю, что в основном выглядит следующим образом:

1   ATG YBR024W
2   TTG YBR024W
3   AAT YBR024W
4   AGT YBR024W
5   TCA YBR024W
6   AGA YBR024W
7   AAA YBR024W
8   TAT YBR024W 

и т. Д.

Затем я пытаюсь сделать l oop над списком. Я создал пустой список с 6600 элементами, которые я притворяюсь заполнять во время цикла.

GenesSplittedFrames <- vector(mode = "list", length = 6600) #Empty list for the frames

z<- 1
for (frame in GenesSplitted[[]]){
  a <- as.matrix(GenesSplitted[[frame]])
  b <- as.data.frame(a)
  b$transcript <- df[z,1]
  print(b)
  z <- z+1
}

Тем не менее, я не могу получить то, что ожидаю, и я делал циклы, подобные этому ранее, в R .

Спасибо миллион.

1 Ответ

0 голосов
/ 27 апреля 2020

Это не проверено, поскольку нет данных в воспроизводимой форме, но, насколько я понимаю, вопрос может сработать.

# Create an empty list for the frames
GenesSplittedFrames <- vector(mode = "list", length = 6600) 

for (frame_inx in seq_along(GenesSplitted)){
  a <- as.matrix(GenesSplitted[[frame_inx]])
  b <- as.data.frame(a)
  b$transcript <- df[frame_inx, 1]
  print(b)
  GenesSplittedFrames[[frame_inx]] <- b
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...