【发布时间】:2021-04-07 16:55:18
【问题描述】:
来自详情部分的?"[":
子集(空索引除外)将删除除名称、dim 和 dimnames 之外的所有属性。
例子:
myobj <- structure(list(a = c(1, 2, 3), b = c(4, 5, 6)), class = "myclass")
attr(myobj, "someattr") <- "Hello World"
myobj
# $a
# [1] 1 2 3
# $b
# [1] 4 5 6
# attr(,"class")
# [1] "myclass"
# attr(,"someattr")
# [1] "Hello World"
因此,如果我将第一个位置子集化,则属性和类将被删除:
myobj[-c(2)]
# $a
# [1] 1 2 3
这个解决方案已经很老了,我想知道现在有没有更简单/更快的方法来做到这一点,所以你不必创建一个方法? rrapply 浮现在脑海,但我认为它只能递归地将函数 f 应用于列表的一组元素:
library(rrapply)
rrapply(myobj, f = head, n = 1, how = "list")
# $a
# [1] 1
# $b
# [1] 4
# attr(,"class")
# [1] "myclass"
# attr(,"someattr")
# [1] "Hello World"
有没有办法使用rrapply 以我想要保留属性和类的方式进行子集化,或者有更简单的方法来做到这一点?
谢谢
【问题讨论】: