2015-09-28 50 views
3

當我寫了下面這個簡單的在R迴路:For循環中的R返回NA在印刷

newlist <- c("A", "B", "C") 
for (i in newlist) { 
    print(newlist[i]) 
} 

我得到以下輸出:

[1] NA 
[1] NA 
[1] NA 

我是相當新的R和一般的編碼?,有人可以向我解釋爲什麼它不會一個一個打印出來嗎?

回答

7

您的for循環正在迭代newlist的值,而不是其索引。也就是說,您正在設置i"A",然後"B"等,然後嘗試通過該值的子集newlist,該值返回錯誤,因爲您只能使用索引或名稱進行子集化。你可能想要的是:

for (i in 1:length(newlist)){ 
    print (newlist[i])) 
} 

,或者更簡單,

for (i in newlist){ 
    print(i) 
}