r - 将属性添加到名称列表会删除该列表的名称
问题描述
基于我观察到的意外行为的简单问题。我在 R 中有一个命名列表,我在其中添加了attributes<-
调用的属性。这将删除列表的名称。为什么以及如何防止这种情况发生?
前任:
ll <- list(a=1:4, b="der")
str(ll)
List of 2
$ a: int [1:4] 1 2 3 4
$ b: chr "der"
attributes(ll) <- list(attr1 = "my_attr")
str(ll)
List of 2
$ : int [1:4] 1 2 3 4
$ : chr "der"
- attr(*, "attr1")= chr "my_attr"
已经没有名字了。
我可以让他们回来这样做:
names(ll) <- c("a", "b")
str(ll)
List of 2
$ a: int [1:4] 1 2 3 4
$ b: chr "der"
- attr(*, "attr1")= chr "my_attr"
但是,我不想在之前记录名称并在之后重新应用它们。我有一种感觉,原始名称是一个被attributes<-
调用覆盖的属性。知道如何克服吗?
解决方案
我认为这(即,设置一个新属性,或修改现有属性,同时保留现有属性)正是attr()<-
为了:
> attr(ll,"attr1") <- "my_attr"
> ll
$a
[1] 1 2 3 4
$b
[1] "der"
attr(,"attr1")
[1] "my_attr"
推荐阅读
- javascript - 使用匹配每个子字符串的 RegExp 拆分字符串。整个字符串应该完全匹配
- python - 读取大型 JSON 文件时的垃圾值
- gitlab - 如何在 gitlab 中包含来自另一个仓库的文件夹
- node.js - 在接口 opencv4nodejs 中声明新方法
- javascript - 如何从这个 javascript 中减少代码行
- javascript - 如何等到生成pdf Javascript
- xml - xsl:for-each-group 在 xsl 2.0 中没有按预期工作
- java - Fragment 无法转换为 Fragment nextFragment
- javascript - 类型错误:firebaseApp.firestore 不是函数
- python - Python 错误语法:缺少 1 个必需的位置参数