从数据框中删除一列会导致不必要的属性丢失。

7

我想从一个数据框中删除一列。但是当我这样做时,数据框的一个属性会丢失,而我不希望这样。首先设置如下:

d <- data.frame(a = 1, b = 2, c = 3)
attr(d, "test_attribute") <- "something"
d2 <- d
d
#>   a b c
#> 1 1 2 3

存在 test 属性:

attributes(d2) # contains $test_attribute [1] "something"

现在我想要移除第二列 - 但大多数方法都会破坏该属性:
attributes(d2[, -2]) # it's gone
attributes(dplyr::select(d2, -2)) # it's gone

我找到了一种保留它的方法:
d3 <- d2
d3[2] <- NULL
attributes(d3)

为什么在前两种情况下test_attribute会被删除,而使用最后一种方法时却不会被删除?

这是一个原始函数 [。源代码可能会给出一些指示 - do_subset - akrun
1个回答

1

?Extract 描述了这种行为。

(除了空索引以外的) 切片将会删除所有的属性,只保留名称、维度和维度名称。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接