l[c('a','b'-6ren">
gpt4 book ai didi

r - 索引操作删除属性

转载 作者:行者123 更新时间:2023-12-05 01:17:22 25 4
gpt4 key购买 nike

显然,用属性索引一个列表会返回一个没有属性的列表。

> l <- list(a=1:3, b=7)
> attr(l, 'x') <- 67
> l
$a
[1] 1 2 3

$b
[1] 7

attr(,"x")
[1] 67
> l[c('a','b')]
$a
[1] 1 2 3

$b
[1] 7

属性没了。是否可以在保留其属性的同时对列表进行索引?

最佳答案

这是这样一个子集函数。请注意,不要试图覆盖 'names' 属性,这一点很重要。

subset.with.attributes <- function(X, ...) {
l <- X[...]
attr.names <- names(attributes(X))
attr.names <- attr.names[attr.names != 'names']
attributes(l)[attr.names] <- attributes(X)[attr.names]
return(l)
}

> subset.with.attributes(l, c('a','b'))
$a
[1] 1 2 3

$b
[1] 7

attr(,"x")
[1] 67

尝试简单地分配属性将导致子集失败,如果它实际上执行任何子集。
> subset.with.attributes(l, c('b'))
$b
[1] 7

attr(,"x")
[1] 67

关于r - 索引操作删除属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13432519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com