r – 使用空索引索引列表

在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

问题:

>为什么第二个语句的输出与第三个语句的输出不同?是不是赋值应该返回被赋值的对象,在这种情况下,第二个语句应该产生与第三个相同的输出?
>为什么第二个语句中的赋值会导致第三个语句后显示的输出?分配给空旷索引列表的规则是什么?
>第四个陈述如何产生显示的输出?当一个列表不在作业的左侧时,有哪些规则可以为具有空索引的列表编制索引?

简而言之,l []将返回整个列表.

(l <- list(a = 1, b = 2))
l[]

l []< - list(c = 3)实质上是重新分配分配给每个索引的内容,现在是列表的结果(c = 3).对于这个例子,它与l [[1]]< - 3和l [[2]]< - 3相同.从?'['页面,它提到几次空索引:

When an index expression appears on the left side of an assignment (known as subassignment) then that part of x is set to the value of the right hand side of the assignment.

并且

An empty index selects all values: this is most often used to replace all the entries but keep the attributes.

所以,我粗略地认为这意味着l的每个索引应该评估列表(c = 3).

当您输入(l []< - list(c = 3))时,返回的是替换值.然后,当您输入l或l []时,您将看到每个索引处的值已被list(c = 3)替换.

相关文章
相关标签/搜索