2016-01-16 126 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

相关问题