我想删除所有属性从数据和应用this solution。但无论是one_entry()
(原来的)和我的one_entry2()
将工作,我不明白为什么。
one_entry2 <- function(x) {
attr(x, "label") <- NULL
attr(x, "labels") <- NULL
}
> lapply(df1, one_entry2)
$`id`
NULL
$V1
NULL
$V2
NULL
$V3
NULL
我们如何才能做到这一点?
- 数据:*
df1 <- setNames(data.frame(matrix(1:12, 3, 4)),
c("id", paste0("V", 1:3)))
attr(df1$V1, "labels") <- LETTERS[1:4]
attr(df1$V1, "label") <- letters[1:4]
attr(df1$V2, "labels") <- LETTERS[1:4]
attr(df1$V2, "label") <- letters[1:4]
attr(df1$V3, "labels") <- LETTERS[1:4]
attr(df1$V3, "label") <- letters[1:4]
> str(df1)
'data.frame': 3 obs. of 4 variables:
$ id: int 1 2 3
$ V1: int 4 5 6
..- attr(*, "labels")= chr "A" "B" "C" "D"
..- attr(*, "label")= chr "a" "b" "c" "d"
$ V2: int 7 8 9
..- attr(*, "labels")= chr "A" "B" "C" "D"
..- attr(*, "label")= chr "a" "b" "c" "d"
$ V3: int 10 11 12
..- attr(*, "labels")= chr "A" "B" "C" "D"
..- attr(*, "label")= chr "a" "b" "c" "d"
6条答案
按热度按时间p5fdfcr11#
要删除 * 所有 * 属性,请执行以下操作
lnlaulya2#
简化一点@maurits-evers回答:
最初的答案是Brian Ripley教授在this R-Help post中给出的。
在
tidyverse
世界中:带有
data.table
dohp0rv53#
如果所有列都是相同类型(如示例中所示),则可以执行以下操作
svmlkihl4#
PKPDmisc
包有一个dplyr友好的方法来实现这一点:vbkedwbf5#
以下是一个简单的解决方案(并且不会将日期类转换为数字):
bxgwgixi6#
在某些情况下,@maurits-evers的修改版本可能会有用。
创建一个函数来移除属性。
从列表中的一个元素中删除属性。
从列表中的所有元素中删除属性。