2014-01-08 2 views
2

앞으로 하나가 필요할 경우를 대비하여 how to provide a reproducible R example을 배우려고합니다.R 미리 정의 된 패턴으로 새 열 추가

나는 SimSurv() 함수를 사용하고 6 개의 새로운 열 (이진 변수)을 추가하려고합니다. 이 열의 값은 평행하거나 교차해서는 안됩니다. var1은 요소 1 ~ 100에 대해 값 1을 가져야하고 나머지 요소 0에 대해 값 1을 가져야합니다. var2은 101에서 200까지 시작합니다.

x = SimSurv(600) 
var1 = matrix(0:1, nrow=100) # 1 - 100 
var2 = matrix(0:1, nrow=100) # 101 - 200 
... 
var6 = matrix(0:1, nrow=100) # 501 - 600 

본인은 합법적 인 Google 검색에이 단어를 사용할 수 없으므로 여기에 문제를 설명해 달라.

답변

3

당신은 gl()model.matrix()으로 작업을 수행 할 수 있습니다

y <- gl(6, 100) 
mat <- model.matrix(~y-1) # -1 is for remove the intercept 
colnames(mat) <- paste0('var', 1:6) 
mat 
+2

+1 cool -이 기능은 절대로 사용하지 않습니다. 나는이 하나 더 기억해야한다! 좋은 대답. –

0

내가 제대로 이해하면 당신과 같이 repmatrix하여이 작업을 수행 할 수 있습니다 : 예에

m <- rep(rep(c(1 , 0) , times = c(100 , 600)) , 6) 
matrix(m[1:3600] , nrow = 600 , byrow = FALSE) 

이 100 배 작은 다음과 같은 교차하지 않는 2 진 변수 컬럼을 제공합니다.

m <- rep(rep(c(1 , 0) , times = c(1 , 6)) , 6) 
matrix(m[1:36] , nrow = 6 , byrow = FALSE) 
#  [,1] [,2] [,3] [,4] [,5] [,6] 
#[1,] 1 0 0 0 0 0 
#[2,] 0 1 0 0 0 0 
#[3,] 0 0 1 0 0 0 
#[4,] 0 0 0 1 0 0 
#[5,] 0 0 0 0 1 0 
#[6,] 0 0 0 0 0 1 
관련 문제