重组大数据矩阵

时间:2016-05-25 01:36:01

标签: r list matrix data-structures

我有27,77个变量的187,727个观测矩阵。

每一行都包含物种名称和与该名称相关的特征测量值。每个物种的观测结果不均匀。

我想更容易地检查矩阵。我最初的想法是创建一个for循环,它确定了唯一物种名称的数量,然后确定该物种有多少条目,然后将数据转移到每个物种名称下分组的信息列表。然后,我可以将每组物种信息分别进行审核。

不幸的是,在我理解如何做到这一点时,我遇到了障碍。这是我设法得到了多远:

traits <- list()

for(i in 1:length(unique(data.traits$AccSpeciesName))){

    name <- data.traits$AccSpeciesName[i]

      for(j in 1:sum(data.traits$AccSpeciesName %in% data.traits$AccSpeciesName[name])){

          traits[i,j] <- data.traits[j,]

     }
}

1 个答案:

答案 0 :(得分:0)

要了解用户42建议您如何解决此问题,请尝试查看基于您提供的分组因子?split划分数据框或矩阵的f。这是一个小例子:

data(iris)
mylist = split(x = iris, f = iris$Species)
lapply(mylist, summary)

更明确的代码可能如下所示:

data(iris)

# using `split` ----
mylist = split(iris, iris$Species)

# return the rows of the data frame where the Species column is equal ----
# to each of the unique values that the column takes ---------------------
mylist2 = lapply(levels(iris$Species), function(x) iris[iris$Species == x,])
names(mylist2) = levels(iris$Species) # so that all.equal will return TRUE

# compare the two ways --------
all.equal(mylist, mylist2) # TRUE