Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.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_List_Data.table - Fatal编程技术网

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,…)
该解决方案结构紧凑、优雅,与给定此结构时的性能相当。