Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将属性设置为R中的多个data.table列_R_Data.table - Fatal编程技术网

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

将属性设置为R中的多个data.table列,r,data.table,R,Data.table,这应该是件容易的事,但我似乎做不好 我有一个数据表,有N列(假设N=40K)和两个长度相同的字符向量(即labelvector和unitvector),我想将属性“label”和“units”添加到data.table的每一列,并添加到该列的相关向量所指示的值 这两个向量也使用data.table列名命名 我的工作围绕着对所有列使用setattr,或者将.SD表示法与lappy结合使用,当我有大表但没有任何重大成功时,我将其作为主要工作 后者失败,因为我无法从lappy中访问传递给函数调用的列的

这应该是件容易的事,但我似乎做不好

我有一个数据表,有N列(假设N=40K)和两个长度相同的字符向量(即labelvector和unitvector),我想将属性“label”和“units”添加到data.table的每一列,并添加到该列的相关向量所指示的值

这两个向量也使用data.table列名命名

我的工作围绕着对所有列使用setattr,或者将.SD表示法与lappy结合使用,当我有大表但没有任何重大成功时,我将其作为主要工作

后者失败,因为我无法从lappy中访问传递给函数调用的列的名称,以便通过引用设置属性

我可以创建一个通过引用设置属性的函数(在函数体中具有:=data.table调用)或一个设置属性的*apply/for循环,但两者都需要花费大量时间

你认为这可以做得更快或更优雅吗

*编辑*****

例如:

该表有4列:Age、Hgt、Wgt和S

labelvector有4个值:“年龄”、“身高”、“体重”和“性别”

unitvecor还有4个值:“年”、“厘米”、“千克”和“NA”

labelvector和unitvector值都使用表列名命名

因此,目标是为数据表设置:

列年龄,标签:“年龄”,单位“年”

Hgt列,标签:“高度”,单位“厘米”

Wgt列,标签:“重量”,单位为“千克”

S列,标签:“性别”,单位NA


必须将其推广到数万列的data.table。

这将解决您的问题

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

attr(临时数据,“名称”)我相信这就是你要找的

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


data.table(或frame)的每一列都应根据两个单独向量的值具有不同的标签和单位。我将尝试提供上面的一个例子。你能解释一下你是如何做到这一点的吗?我也有同样的问题,我希望以一种高效的方式跨多个列分配列属性。