Hadley Wickam 的 Advanced R 中多次使用空索引对数据框进行索引的技术。 ,但只是顺便解释一下。我试图找出用空索引对列表进行索引的规则。考虑以下四个陈述。
> (l <- list(a = 1, b = 2))
$a
[1] 1
$b
[1] 2
> (l[] <- list(c = 3))
$c
[1] 3
> l
$a
[1] 3
$b
[1] 3
> l[]
$a
[1] 3
$b
[1] 3
问题:
最佳答案
除了之前的答案,请检查一下。请注意,行为与普通向量和列表完全相同,因此不能将其标记为“特定于列表”。
v <- 1:3
names(v) <- c("one", "two", "three")
r <- 4:5
names(r) <- c("four", "five")
(v[] <- r)
four five
4 5
Warning message:
In v[] <- r :
number of items to replace is not a multiple of replacement length
v
one two three
4 5 4
通过子集分配保留初始属性(此处为名称)。因此,分配右侧的名称将丢失。同样重要的是,通过子集分配遵循回收规则。在您的示例中,所有值都重新分配为 3,在我的示例中,由于长度不兼容,部分回收带有警告。
总结,
<-
的分配返回评估右侧 之前 应用回收规则。 l
或 v
与 l[]
基本相同或 v[]
. 关于r - 使用空索引索引列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20836142/