Bu, NULL atomik vektörüne 1 uzunluğundaki bir vektör atadığınız için ortaya çıkmaktadır.
help(Extract)
itibaren - $<-
NULL x
uygulanır
, ilk list()
için x
coerces. Bu, value
ikame değerinin 1'den büyük olması durumunda [[<-
ile de gerçekleşir: value
1 veya 0'a sahipse, ilk olarak value
türünün sıfır uzunluklu bir vektörüne zorlanır.
Değişme (uzunluk 0 veya 1 vektörü küçük veya başka bir şey) ... <- 1:2
için atama ve her iki kod blokları aynı sonucu alırsınız. yorumlarında @alexis_laz tarafından belirtildiği gibi
list1 <- list()
lev1 <- "level1"
lev2 <- "level2"
list1[[lev1]][[lev2]] <- 1:2
list1
# $level1
# $level1$level2
# [1] 1 2
list2 <- list()
list2$level1$level2 <- 1:2
list2
# $level1
# $level1$level2
# [1] 1 2
bu daha basit bir örneği, sadece bir NULL atomik vektör ile başlar ve ne bakmaktır.
x <- NULL
## assign a length 1 vector --> atomic result
x[["lev1"]] <- 1
x
# lev1
# 1
y <- NULL
## assign a length > 1 vector --> list result
y[["lev1"]] <- 1:2
y
# $lev1
# [1] 1 2
$<-
gelen sonuç hep bu yüzden buraya atladık bir listedir.
Benzer şekilde daha basit bir durumda 'a = NULL; bir $ lev1 = 1; a 'ile karşılaştırıldı, b = NULL; b [["lev1"]] = 1; Bu daha açık olabilir. “[[<-” ', hem atomik hem de jenerik vektörler için kullanıldığından, R, NULL'un neyin nesi olduğunu ve basit bir senaryosu ne olduğunu bilmez. –