我无法使用lapply来更改数据表/框架的标签
dt<-data.table(a=1:4,b=letters[1:5],c=5:9)
> label(dt)
a b c
"" "" ""
> lapply(c("a","b","c"),function(x) label(dt$x)="aaa")
Show Traceback
Rerun with Debug
Error in attr(x, "label") <- value : attempt to set an attribute on NULL
为什么不起作用?如果我在lapply
以外的label(dt$a)="aaa"
工作
答案 0 :(得分:2)
使用dt[[x]]
代替dt$x
。它使用x作为文字。
此外,由于函数未返回值,因此更容易使用显式循环(而不是sapply
或lapply
)
for(i in c("a","b","c")) {
Hmisc::label(dt[[i]]) <- "aaa"
}