我有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,]
}
}
答案 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