13
벡터가 있습니다 : c("A","1","2","3","B","4","5","D","6","7","8","9","10")
이 벡터를 목록으로 변환하고 싶습니다 : list(A=c(1,2,3),B=c(4,5),...)
벡터의 문자는 벡터 목록의 이름입니다. 벡터는 문자 사이의 숫자 블록에 있습니다.벡터를리스트로 변환
벡터가 있습니다 : c("A","1","2","3","B","4","5","D","6","7","8","9","10")
이 벡터를 목록으로 변환하고 싶습니다 : list(A=c(1,2,3),B=c(4,5),...)
벡터의 문자는 벡터 목록의 이름입니다. 벡터는 문자 사이의 숫자 블록에 있습니다.벡터를리스트로 변환
한 가지 방법이 있습니다. 멋진 것은 없지만 일을 끝내게됩니다.
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]))
팬시에 대한 임계 값이 내 것보다 높고 멋진 작업이어야합니다! – Chase
+1 동의, 매우 좋은 –
나는이 +100을 줄 수 있었으면 좋겠다. 이것은 논리적 인 벡터에서'cumsum'을 매우 똑똑하게 사용하는 것입니다. 저는 그것들에 대한 많은 어플리케이션을 제 코드에서 볼 수 있습니다. – Sharpie