R函数,用于将data.table转换为命名向量的命名列表

R函数,用于将data.table转换为命名向量的命名列表,r,data.table,R,Data.table,我正在寻找一个R函数,它在合理的时间内可以转换一个data.table,例如(在有许多1000s条目的情况下): 通过'num1'列的'name'列向量命名为'id'列的命名列表 输出(列表)如下所示: $id1 a f y z 1 5 8 5 $id2 w k l 2 5 6 提前感谢您的帮助。您可以拆分并使用设置名称获得命名向量 lapply(split(df, df[[1]]), function(x) setNames(x$num1, x$name)) #$i

我正在寻找一个R函数,它在合理的时间内可以转换一个data.table,例如(在有许多1000s条目的情况下):

通过'num1'列的'name'列向量命名为'id'列的命名列表

输出(列表)如下所示:

$id1
   a f y z
   1 5 8 5
$id2
   w k l
   2 5 6

提前感谢您的帮助。

您可以
拆分
并使用
设置名称
获得命名向量

lapply(split(df, df[[1]]), function(x) setNames(x$num1, x$name))

#$id1
#a f y z 
#1 5 8 5 

#$id2
#w k l 
#2 5 6 

正如@StudidWolf所建议的,我们也可以在这里使用
by

by(df,df$id,function(x) setNames(x$num1,x$name))

你可以使用split。。但要明确的是,在列表中,每个元素都是一个向量或数据。frame?每个元素都是一个向量,可供使用?by(X,X$id,函数(i)setNames(i$num1,i$name));但是是的;你的方法有效:)@StupidWolf是的。
by
也可以在这里使用。谢谢,我更新了答案:)如果拆分data.table,应该重新考虑您的方法。你根本不应该(需要)那样做。效率很低。
by(df,df$id,function(x) setNames(x$num1,x$name))