2016-09-17 85 views
-2

R中的这两个语句或为什么在R中使用NULL有什么不同?为什么在r中使用null

for (i in 1:10) { 
    T[i]="a" 
} 
T 
[1] "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" 

在第二代码使用NULL

for (i in 1:10) { 
    T=NULL 
    T[i]="a" 
} 
T 
[1] NA NA NA NA NA NA NA NA NA "a" 
+1

'T = NULL'应该在外部并在for()'循环之前初始化变量'T'。但是因为'T'是一个代表'TRUE'的R全局变量,所以你没有看到第一个循环中实际发生了什么。尝试使用'T'以外的东西,比如'x',看看你得到了什么。 –

回答

3

只要你在指定T = NULL因此之前的所有状态不会丢失,但在分配NULL至T之后的最后一步,循环将分配a到最后的T的索引,因此输出

for (i in 1:10) { # consider last step of loop 
    T=NULL # set T=NULL so all values are gone 
    T[i]="a" # set last index of T = 'a' 
} 
T 

关于第一种情况下,它会照常运行,我猜你已经知道了。

相关问题