Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.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中的矩阵或数据集_R_Matrix_Set - Fatal编程技术网

按相关列拆分R中的矩阵或数据集

按相关列拆分R中的矩阵或数据集,r,matrix,set,R,Matrix,Set,对我来说,这是一个简单但却极其艰苦的过程。 我试图找出如何从数据中生成一组矩阵 如果你有R 做 尺寸是多少 iris是R编程中给出的数据 当你这样做的时候 iris(3) dim(iris3) [1] 50 4 3 你会得到一组三个矩阵,分成“物种”相关列 我如何编程/编写代码以便可以为其他数据集执行此操作 感谢您抽出时间访问您正在从abind软件包中查找abind功能: > library(abind) > IrisArray <- abind(split(iris[

对我来说,这是一个简单但却极其艰苦的过程。 我试图找出如何从数据中生成一组矩阵

如果你有R

尺寸是多少

iris是R编程中给出的数据

当你这样做的时候

iris(3)
dim(iris3)

[1] 50  4  3
你会得到一组三个矩阵,分成“物种”相关列

我如何编程/编写代码以便可以为其他数据集执行此操作


感谢您抽出时间访问

您正在从
abind
软件包中查找
abind
功能:

> library(abind)
> IrisArray <- abind(split(iris[, -5], iris[,5]), along=3)
> dim(IrisArray)
[1] 50  4  3  # these are the dimensions you want.

我不明白你在干什么<代码>虹膜(3)什么也不做,在这里抛出一个错误。(+1)@juba。也不太清楚。我猜您正在寻找
split(iris,iris$Species)
。是的,split(iris,iris$Species)是我想要的,但是split(iris,iris$Species)有所有的物种名称列。注意iris3有三个50乘4的矩阵。这很好,但是有没有一种方法可以让它大于3?由于Iris有3种,似乎是3种,但我的数据需要10种。
沿
是绑定数组的维度,如果您的数据有10种将予以考虑,
分割因子
将为您提供所需的信息。)
> library(abind)
> IrisArray <- abind(split(iris[, -5], iris[,5]), along=3)
> dim(IrisArray)
[1] 50  4  3  # these are the dimensions you want.
library(abind)
Splitbyfactor <- function(x, by='Species'){
  ind <-  which(colnames(x)==by)
  abind(split(x[, -ind], x[,ind]), along=3)
}

dim(Splitbyfactor(iris,  by='Species'))
[1] 50  4  3
> df <- data.frame(A=rnorm(10), B=rnorm(10), ID=rep(LETTERS[1:5], each=6)) 
> dim(df)
[1] 30  3
> dim(Splitbyfactor(df,  by='ID'))
[1] 6 2 5