小编Dev*_*ing的帖子

将命名向量转换为R中的列表

假设我有以下命名的数字向量:

a <- 1:8
names(a) <- rep(c('I', 'II'), each = 4)
Run Code Online (Sandbox Code Playgroud)

如何将此向量转换为长度为2的列表(如下所示)?

a.list
# $I
# [1] 1 2 3 4
# $II
# [1] 5 6 7 8
Run Code Online (Sandbox Code Playgroud)

请注意,这as.list(a)不是我正在寻找的.我非常不满意(对于大型载体来说很慢)解决方案是:

names.uniq <- unique(names(a))
a.list <- setNames(vector('list', length(names.uniq)), names.uniq)
for(i in 1:length(names.uniq)) {
  names.i <- names.uniq[i]
  a.i <- a[names(a)==names.i]
  a.list[[names.i]] <- unname(a.i)
}
Run Code Online (Sandbox Code Playgroud)

提前谢谢你的帮助,德文

r vector

8
推荐指数
2
解决办法
6184
查看次数

标签 统计

r ×1

vector ×1