这应该是容易的事情,但我似乎无法做对。
我有一个包含N列的数据表(让我们说N = 40K)和两个长度相同的字符向量(即labelvector和unitvector),我想添加属性" label&# 34;和"单位" data.table的每一列到该列的相关向量所指示的值。
两个向量也使用data.table列名命名。
我的努力围绕着将setattr用于所有列或包含带有lapply的.SD符号,当我拥有大型表但没有取得任何重大成功时,我将其用作主要的主力。
后者失败了,因为我无法从lapply中访问传递给函数调用的列的名称,以便通过引用设置属性。
我可以创建一个通过引用设置属性的函数(在函数体中具有:= data.table调用)或者设置它们的* apply / for循环但都需要花费很多时间。
你认为这可以更快或更优雅地完成吗?
* 编辑*****
示例:
该表有4列:Age,Hgt,Wgt和S
labelvector有4个值:" Age"," Height"," Weight"和"性"。
unitvecor还有4个值:"年"," cm"," kg",NA。
labelvector和unitvector值都以表列名命名。
所以目标是设置数据表:
专栏年龄,标签:"年龄",单位"年"。
列Hgt,标签:"高度",单位" cm"。
列Wgt,标签:"重量",单位" kg"。
列S,标签:"性别",单位NA。
这必须推广到数万列的data.table。
答案 0 :(得分:2)
这将解决您的问题
attr(temp_data, "names") <- c("label", "units")
其中temp_data是您的数据框
答案 1 :(得分:0)
我相信你正在寻找什么
mapply(setattr,x = temp_data,name =“names”,value = names(temp_data), 简化=错误)