将列名分配给data.table,其名称从另一个data.table中选择

时间:2018-01-15 10:39:44

标签: r dataframe data.table

我必须将列名分配给一系列数据表,这些数据表的名称存储在另一个data.table中(将其解释为配置表)。例如,在下面的示例中,我想命名DT1'id'和'name'的2列。我知道我必须将DT1的列命名为DT1,因为DT2位于col1 = 1:5 col2 = LETTERS[1:5] DT1 = data.table(col1, col2) id = 1 name = "DT1" DT2 = data.table(id, name) columnNames = c('ID', 'Letter')

DT3 = eval(as.name(DT2[1, name]))
colnames(DT3) = columnNames 

x = DT2[1, name]

assign(x, DT3)

我可以用

做到这一点
DT1

我不喜欢这样,因为我将DT3复制到colnames(eval(as.name(DT2[1, name]))) = columnNames colnames(get(DT2[1, name])) = columnNames ,这会降低我的程序速度。

显然,这不起作用:

await client.CreateDocumentCollectionAsync (
   UriFactory.CreateDatabaseUri(databaseId),
   new DocumentCollection { Id = collectionId },
   new RequestOptions { OfferThroughput = 1000 }
);

有没有办法将列名分配给data.table(当data.table的名称只能从另一个data.table中选择时)而不复制data.table?

1 个答案:

答案 0 :(得分:1)

您可以使用data.table::setnames

setnames(get(DT2[1, name]), columnNames)
DT1
#   id Letter
#1:  1      A
#2:  2      B
#3:  3      C
#4:  4      D
#5:  5      E