R 从data.table返回列表
如何从R 从data.table返回列表,r,list,data.table,R,List,Data.table,如何从数据表返回列表?问题是,每当我在j部分返回列表时,它都会通过设计转换为数据表格式 假设我想返回一个列表,其元素命名为(!)长度1向量,即: 预期结果% 集合名(id))]$V1[[1]]%>% 全部相等(预期结果) #[1]是的 编辑 @akrun给出了一个很好的非数据.table解决方案,但我更愿意找到一个使用[.data.table语法的解决方案。最简单的方法是使用和拆分创建的命名向量(带有'val'和'nm'列)以及'id' with(d, split(setNames(val,
数据表
返回列表
?问题是,每当我在j
部分返回列表时,它都会通过设计转换为数据表
格式
假设我想返回一个列表
,其元素命名为(!)长度1向量,即:
预期结果%
集合名(id))]$V1[[1]]%>%
全部相等(预期结果)
#[1]是的
编辑
@akrun给出了一个很好的非数据.table
解决方案,但我更愿意找到一个使用[.data.table
语法的解决方案。最简单的方法是使用和拆分创建的命名向量(带有'val'和'nm'列)以及'id'
with(d, split(setNames(val, nm), id))
-输出
#$A
#a
#1
#$B
#b
#2
#$C
#c
#3
或者,如果我们想在数据.table
中使用创建列表
,它与数据一样有点复杂。table
/数据。frame
列是长度相等的列表
元素。因此,我们可能需要取消属性的分类
或将其封装在嵌套的列表
中,然后展平属性<代码>列表
元素
do.call(c, d[, .(list(split(setNames(val, nm), id)))]$V1)
#$A
#a
#1
#$B
#b
#2
#$C
#c
#3
是的,但这故意避免了数据.table
语法。我将编辑我的问题,以明确它应该在数据.table
语法中完成。您将遇到的一个问题是需要一个列表
。每当数据.table
看到j
返回一个兼容的列表
,它将自动将其转换回data.table
。虽然我理解您希望在大多数操作中完全保留data.table
方法,但包的一个吸引人的优点(就地操作)是不可能通过这样的自定义转换实现的。我建议akrun的第一个使用(d,…)
该解决方案结构紧凑、优雅,与给定此结构时的性能相当。