2013-07-14 2 views
2

0 및 1을 포함하는 열이있는 행렬이 있고 각 행의 값을 연결하여 그 행렬에 해당 연결 문자열이 포함 된 새 열을 만들려고합니다.연결된 값에서 새 행렬 열 만들기

나는 연결된 값 목록을 만들 Concatenating N columns of text in R 에서

apply(format(matrix), 1, paste, collapse="") 

을 사용하지만, 문제가 매트릭스에 새 열로 그 값을 얻는 데 -이 코드의 두 번째 줄이 잘못된 구문을 .

내 현재 코드 :

당신은 R에 대한 기본적인 소개를 읽을 필요가
newcolumn <- rep(0,times=nrow(matrix)) 
newcolumn[matrix[apply(format(matrix), 1, paste, collapse="")]] 
matrix <- cbind(matrix, newcolumn) 

답변

4
  1. 합니다 (tag wiki for links 참조).

현재 0의 벡터를 newcolumn으로 생성했습니다. 코드의 두 번째 줄은 쓰레기입니다 (올바르게 지적한 바와 같이).

apply(format(matrix), 1, paste, collapse="")에서 matrix까지의 결과를 바인딩 할 수 있습니다. 미리 할당 할 필요가 없습니다 newcolumn.

matrixcharacter 열을 포함하면 전체 행렬이 문자로 강제 변환되므로 단일 유형의 데이터 (예 : 숫자 또는 문자 등) 만 저장할 수 있습니다.

# examples 
# a character matrix containing the result + matrix coerced to character 
charResults <- cbind(matrix, apply(format(matrix), 1, paste, collapse="")) 


# you could use a data.frame to have different data classes in the same structure 

dfResults <- cbind(as.data.frame(matrix), result = apply(format(matrix), 1, paste, collapse="")) 

또한 당신의 객체 트릭을 할해야합니다 (예 : matrix 등) base R 기능

+0

정말 고마워요. 저는 R에 대한 기본적인 소개가 필요하지만, 불행하게도이 프로젝트를하고 싶다는 것보다 훨씬 더 급하게 생각합니다. 당신의 charResults 코드는 내가 필요로했던 것입니다 - 정말 고마워요. – user2581871

3

cbind(matrix, paste0(as.character(matrix[,1]), as.character(matrix[,2])))의 이름을 이름없는 보통 좋습니다주의. '01'사례를 수용하려면 행렬을 문자 형식으로 변환해야합니다.