2016-12-06 35 views
4

先從以下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中的行數。

回答

7

可以使用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

相關問題