J'ai regardé la question précédemment posée au sujet de garder la sortie «pour la boucle» dans une liste mais je ne peux pas sembler l'appliquer à ma fonction.Ajouter la sortie de pour la boucle à la liste
Peut-être que quelqu'un peut me donner une idée de ce que je fais mal.
dna_seqs <- list('id1', 'ATGGCAATAACCCCCCGTTTCTACTTCTAGAGGAGAAAAGT', 'id2', 'TCCGTTAAGATATTCTTACGTGTGACGTAGCTATGTATTTTGCAGAGCTGGCGAACGCGTTGAACACTTCACAGATGGT', 'id3', 'AGCTGGTTCCTGCGTGAGCTCGAGACTCGGGATGACAGCTCTTTAAACATAGAGCGGGGGCGTCGAACGGTCGA', 'id4', 'CATCACCGCGATAGGCTGACAAAGGTTTAACATTGAATAGCAAGGCACTTCCGGTCTCAATGAACGGCCGGGAA')
gc_list <- list()
count_gc <- function(x) {
for (i in x) {
if (startsWith(i, 'id')) {
gc_list[[i]] <- i
}
else {
seq <- str_to_upper(i)
seq <- gsub('N', '', seq)
gc <- str_count(seq, 'G') + str_count(seq, 'C')
gc_content <- gc/nchar(seq) * 100
gc_list[[i]] <- gc_content
}
}
}
Cette fonction n'ajoute aucun élément à la liste, qui est toujours vide?
Vous ne devriez pas utiliser un objet statique de l'environnement global au sein d'une fonction personnalisée. Au lieu de cela, utilisez une variable et renvoyez-la dans l'appel de la fonction: 'count_gc <- function (x) ...'. Remplacez la 'gc_list [[i]]' par 'mylist [[i]]' dans la fonction, placez un 'mylist <- list()' au début et un 'return (mylist)' à la fin, puis appelez avec 'gc_list <- count_gc (x)'. – LAP