将属性设置为R中的多个data.table列

时间:2014-08-05 17:06:18

标签: r data.table

这应该是容易的事情,但我似乎无法做对。

我有一个包含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。

2 个答案:

答案 0 :(得分:2)

这将解决您的问题

  attr(temp_data, "names") <- c("label", "units")

其中temp_data是您的数据框

答案 1 :(得分:0)

我相信你正在寻找什么

  

mapply(setattr,x = temp_data,name =“names”,value = names(temp_data),   简化=错误)