我必须将列名分配给一系列数据表,这些数据表的名称存储在另一个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?
答案 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