2014-03-28 5 views
-1

현재 행렬에 행으로 저장되어있는 값의 벡터를 쉼표로 값을 구분하여 단일 셀로 결합하려고합니다.여러 셀을 하나의 셀로 결합 R

현재 코드는 임의의 벡터를 만듭니다. 예를 들어

,

## Group 1 
N <- 10 

set.seed(06510) 

grp1 <- t(replicate(N, sample(seq(1:4), 4, replace = FALSE))) 

결과는

표 1과 같이 :

 [,1] [,2] [,3] [,4] 
[1,] 2 4 3 1 
[2,] 4 2 1 3 
[3,] 2 4 1 3 
[4,] 1 4 3 2 
[5,] 1 3 2 4 
[6,] 2 1 3 4 
[7,] 4 3 2 1 
[8,] 4 1 3 2 
[9,] 2 4 3 1 
[10,] 1 4 2 3 

하지만 결과는 같이 할 :

표 2 :

 [,1] 
[1,] 2,4,3,1 
[2,] 4,2,1,3 
[3,] 2,4,1,3 
[4,] 1,4,3,2 
[5,] 1,3,2,4 
[6,] 2,1,3,4 
[7,] 4,3,2,1 
[8,] 4,1,3,2 
[9,] 2,4,3,1 
[10,] 1,4,2,3 

나는 무작위 화 테이블을 만들고 있으며, 각 셀은 각 조사 응답자에 대한 4 가지 설문 질문의 순서를 나타냅니다. 궁극적으로, 위와 같은 여러 개의 열을 만들려고하므로 모든 임의 항목에 대해 4 개의 열을 유지하면 읽기 어려운 큰 임의 표가됩니다.

+1

조만간 long format 테이블 (google이 그 의미를 알 수 있습니다)이 작업에 훨씬 더 잘 작동 함을 발견 할 것입니다. – eddi

답변

-1

무엇이든지간에, 당신은 character s로 끝날 것입니다. 나는 그것에 놀라지 않기를 바랍니다.

apply(grp1,1,paste,collapse=",") 

당신에게 벡터 결과를 제공합니다. 이를 다음과 같은 행렬로 바꿀 수 있습니다 :

matrix(apply(grp1,1,paste,collapse=","),ncol=1) 

을 참조하십시오. apply()으로 매우 많습니다.이 유용합니다.

+0

이것이 장기적으로 볼 때, 다음과 같을 것입니다 더 빠른 대안 :'do.call (paste, c (data.frame (grp1), sep = ","))' – A5C1D2H2I1M1N2O1R2T1

2

list 구조를 보호하려면 I() 함수를 사용해야합니다. 두 번째 문제는 행렬을 반환하는 replicate()에서 list 구조체를 반환해야한다는 것입니다. 동일한 길이 벡터 세트가 있기 때문입니다. 이보다 당신에게더 유용한 이유 그러나 ....

grp1 <- replicate(N, t(sample(seq(1:4), 4, replace = FALSE)) , simplify = FALSE) 

as.data.frame(I(grp1)) 
#  I(grp1) 
#1 2, 4, 3, 1 
#2 4, 2, 1, 3 
#3 2, 4, 1, 3 
#4 1, 4, 3, 2 
#5 1, 3, 2, 4 
#6 2, 1, 3, 4 
#7 4, 3, 2, 1 
#8 4, 1, 3, 2 
#9 2, 4, 3, 1 
#10 1, 4, 2, 3 

# And just to check... 
sapply(as.data.frame(I(grp1)) , mode) 
I(grp1) 
"list" 

simplify = FALSE을 설정하고 전치 작업 t이 발생하는 위치에 유의, 내가 모르는 평범한 구식 data.frame 또는 use-에 아마 더 나은 경우, listmatrices이다.

+0

+1. 값의 수가 적 으면 (여기서는 4) 그룹의 수가 많으면 (여기서는 10이지만 10K 그룹을 상상해 봅시다) 먼저 모든 순열을 생성하는 것이 좋습니다 ([this one]와 같은 함수로 (예를 들어, http://stackoverflow.com/a/20199902/1270695),'sample'을 반복적으로 호출하는 대신 행을 샘플링 할 수 있습니다. 그러나 값의 수가 큰 경우 순열을 생성하는 것은 sample을 반복적으로 호출하는 것보다 느릴 수 있습니다. – A5C1D2H2I1M1N2O1R2T1

관련 문제