将所有data.table行到一个列表[R

问题描述:

先从以下data.table:将所有data.table行到一个列表[R

set.seed(1234) 
dt <- data.table(x = runif(3), y = runif(3), z = runif(3)) 

print(dt) 
#   x   y   z 
#1: 0.1137034 0.6233794 0.009495756 
#2: 0.6222994 0.8609154 0.232550506 
#3: 0.6092747 0.6403106 0.666083758 

,把它变成一个列表的结构如下:

print(dt2) 
#[[1]] 
#[1] 0.1137034 0.6233794 0.009495756 
# 
#[[2]] 
#[1] 0.6222994 0.8609154 0.2325505 
# 
#[[3]] 
#[1] 0.6092747 0.6403106 0.6660838 

我一直研究答案this question,但一直没能找出如何做到这一点的data.table的所有行一次,而不应用循环功能。我试图避免一个循环函数,因为实际data.table中的行数。

可以使用data.table::transpose()功能:

transpose(as.list(dt)) 

#[[1]] 
#[1] 0.113703411 0.623379442 0.009495756 

#[[2]] 
#[1] 0.6222994 0.8609154 0.2325505 

#[[3]] 
#[1] 0.6092747 0.6403106 0.6660838 
+1

感谢,这让我的方式出现99%!为了得到正是我寻找,我需要'unname'这样:'unname(as.list(转(DT))' – bshelt141

+1

这是一个很好的选择,我更新了一个不同的版本节省了使用unname'的' 。 – Psidom