1
我已經看過以前提過的關於在列表中保留'for循環'輸出的問題,但我似乎無法將其應用於我的函數。將for循環的輸出添加到列表中
也許有人可以給我一個關於我做錯了什麼的線索。
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
}
}
}
這個函數沒有在列表中追加任何元素,它仍然是空的?
一個自定義函數中你不應該從全局環境中使用靜態對象。相反,使用一個變量並在函數調用中返回它:'count_gc < - function(x)...'。在函數中用'mylist [[i]]'替換'gc_list [[i]]',在開始處放置一個mylist < - list(),在末尾放置一個'mylist'它用'gc_list < - count_gc(x)'。 – LAP