2016-01-16 62 views
2

我有數組:如何將數組拆分爲單獨的數組(R)?

>cent 
     b e   r f 
A19 60.46 0.77 -0.12 1 
A15 16.50 0.53 0.08 2 
A17 2.66 0.51 0.20 3 
A11 36.66 0.40 -0.25 4 
A12 38.96 0.91 0.23 1 
A05 0.00 0.29 0.01 2 
A09 3.40 0.35 0.03 3 
A04 0.00 0.25 -0.03 4 

可能有人請說我如何分割該陣列成4個獨立的陣列,其中最後一列«F»是標誌?結果我想看到:

>cent1 
     b e   r f 
A19 60.46 0.77 -0.12 1 
A12 38.96 0.91 0.23 1 
>cent2 
     b e   r f 
A15 16.50 0.53 0.08 2 
A05 0.00 0.29 0.01 2 
…. 

我應該使用for-loop和檢查標誌「f」還是存在內置函數?謝謝。

+0

如果它是一個真正的數組,而不是一個數據幀,然後嘗試[這一個](HTTP:/ /stackoverflow.com/questions/30122693/named-arrays-dataframes-and-matrices) –

+0

如果下面的解決方案解決了這個問題,請考慮通過點擊投票旁邊的勾號來接受它。 – akrun

回答

1

我們可以使用split創建listdata.frames

lst <- split(cent, cent$f) 

注意:這裏我假設'cent'是一個data.frame。如果是matrix

lst <- split(as.data.frame(cent), cent[,"f"]) 

通常情況下,它足以完成大部分的分析。但是,如果我們需要在全球環境中創建多個對象,我們可以使用(不推薦)list2env

list2env(lst, paste0("cent", seq_along(lst)), envir= .GlobalEnv) 
+0

感謝您的回覆。 split()函數是可行的。現在我有了第一個列表。我如何解決列表lst [1]中的元素是相同類型的,比如$ b? – Nick

+0

我試過lst [1] $ b,lst ['1'],lst [1] $'1'。但是我只需要提取第一列。 – Nick

+0

@Nick如果你需要第一列'lst [[1]] [1]'(如果數據集是data.frame),如果is是矩陣'lst [[1]] [,1]' – akrun

相關問題