2017-01-04 5 views
2

데이터 테이블의 시작 벡터에서 엔드 벡터까지의 모든 정수 목록을 가진 열을 만들고 싶습니다.seq를 벡터 방향으로 사용하기

seq 벡터 방식으로 사용할 수 있습니까? 뭔가 같은 :

library(data.table) 
Startpoints <- seq(1,11,5) 
Endpoints <- seq(5,15,5) 
DT <- data.table(Startpoints, Endpoints) 
DT[, sequences := seq(Startpoints, Endpoints, 1)] 

는 idealy (지금까지리스트 랩 업을 고려하지 않는다) 나에게 DT에서 같은 열을 줄 것이다 :

sequences 
1 2 3 4 5 
6 7 8 9 10 
11 12 13 14 15 

더 일반적으로 질문 : 나는 쉬운이 없다는 것을 가정 함수를 벡터화 된 버전으로 변환하는 방법은 무엇입니까? (벡터) 변수가 한 행의 단일 값을 나타내는 시점과 함수 인수로 사용될 때 완전한 벡터를 나타내는 시점을 아직 완전히 이해하지 못합니다.

답변

3

당신은 단순히 Map을 사용할 수

여러 벡터의 해당 요소에 함수를 적용하려고 할 때 그것은 유용
DT[,sequences := Map(":", Startpoints, Endpoints)] 
# Startpoints Endpoints  sequences 
#1:   1   5  1,2,3,4,5 
#2:   6  10 6, 7, 8, 9,10 
#3:   11  15 11,12,13,14,15 

, 또는 귀하의 경우 열에.

1
DT[, .(seq = paste0(Startpoints:Endpoints, collapse = ",")), 
     by = c("Startpoints", "Endpoints")] 
# Startpoints Endpoints   seq 
#1:   1   5  1,2,3,4,5 
#2:   6  10  6,7,8,9,10 
#3:   11  15 11,12,13,14,15 

library(dplyr) 
DT %>% group_by(Startpoints, Endpoints) %>% mutate(seq = paste0(Startpoints:Endpoints, collapse = ",")) 

# Startpoints Endpoints   seq 
#1   1   5  1,2,3,4,5 
#2   6  10  6,7,8,9,10 
#3   11  15 11,12,13,14,15 
+1

@Frank 내가이 기능을 알고하지 않았다 ... 감사합니다. 이제 방금'toString() '을 사용하여 실행했으며 네, 동일합니다. –