【发布时间】:2011-07-07 15:29:02
【问题描述】:
我有矢量:c("A","1","2","3","B","4","5","D","6","7","8","9","10")
我想将此向量转换为列表:list(A=c(1,2,3),B=c(4,5),...)
来自向量的字母是向量列表中的名称。向量来自字母之间的数字块。
【问题讨论】:
标签: r
我有矢量:c("A","1","2","3","B","4","5","D","6","7","8","9","10")
我想将此向量转换为列表:list(A=c(1,2,3),B=c(4,5),...)
来自向量的字母是向量列表中的名称。向量来自字母之间的数字块。
【问题讨论】:
标签: r
这是一种方法。没什么花哨的,但它可以完成工作。
x <- c("A","1","2","3","B","4","5","D","6","7","8","9","10")
y <- cumsum( grepl("[[:alpha:]]", x) )
z <- list()
for(i in unique(y)) z[[x[y==i][1]]] <- as.numeric(x[y==i][-1])
z
# $A
# [1] 1 2 3
#
# $B
# [1] 4 5
#
# $D
# [1] 6 7 8 9 10
# UPDATE: Trying to be a bit more "fancy"
a <- grepl("[[:alpha:]]", x)
b <- factor(cumsum(a), labels=x[a])
c <- lapply(split(x,b), function(x) as.numeric(x[-1]))
【讨论】:
cumsum——我可以在我自己的一些代码中看到它的许多应用程序。
c? tss tss tss ... ;)