2015-09-28 27 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) 
}