r - 使用空索引索引列表

标签 r list indexing

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,在我的示例中,由于长度不兼容,部分回收带有警告。

    总结,
  • <- 的分配返回评估右侧 之前 应用回收规则。
  • 这是因为 回收 ,因为两个物体的长度不同。
  • 没有赋值运算符,lvl[] 基本相同或 v[] .
  • 关于r - 使用空索引索引列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20836142/

    相关文章:

    Java OO设计: interfaces and lists

    sql-server - 关于在 SQL Server 上为各种查询创建单列索引

    r - .SD 在 data.table 操作中的兴趣

    r - 使用来自不同变量的数据在条形图中绘制百分比

    用户/Web 控件设计时支持的 C# 枚举列表/集合?

    python - 计算列表列中两个元素的出现次数

    r - R中拟合函数的优度

    r - 将 R 与 tm 包一起使用时如何准确删除标点符号

    mysql 索引 : multiple Key_name with the same name

    c# - 数组索引可以在 C# 中命名吗?