2013-10-06 2 views
0

으로 나눕니다. name1, name2 and name3, 0, 1, 2 또는 name1, name2, name3 and name4, 0, 1, 2 형태의 문자열이 많으며 벡터를 4 개의 요소로 분할하고 싶습니다. 첫 번째 요소는 전체 텍스트 문자열입니다. 문제는 strsplit이 텍스트와 숫자를 구별하지 않고 첫 번째 경우에는 5 개의 요소로, 두 번째 예제에서는 6 개의 요소로 문자열을 분할한다는 것입니다. 변수의 이름을 가진 문자열의 텍스트 부분을 동적으로 건너 뛰도록 R에 지시하려면 어떻게해야합니까?쉼표로 구분 된 혼합 텍스트와 숫자 문자열을 strsplit으로 R

답변

2

두 가지 주요 옵션이 있습니다 :
(1) grep로 숫자를 추출하십시오. 쉼표에
(2) 분할, 그때 당신은 또한 적절한 장소에 구분 기호를 삽입 한 다음 해당에 분할 할 수있는 두 번째

splat <- strsplit(x, ",")[[1]] 
numbs <- !is.na(suppressWarnings(as.numeric(splat))) 

c(paste(splat[!numbs], collapse=","), splat[numbs]) 
# [1] "name1, name2 and name3" " 0" " 1" " 2" 
+0

답변을 주셔서 감사합니다. numbs 객체 생성을 시도 할 때 오류가 발생합니다. – nopeva

+0

whoops,'[[1]]'이 (가)'strsplit' 줄 끝에 있어야합니다. 결정된! –

2

을 선호하는 숫자에 강요하고 NA

확인 :

delimmed <- gsub('(.*[a-z][0-9]+| [0-9]+),','\\1%',strr) 
strsplit(delimmed,'%') 

합니다 (|의 왼쪽에있는) 정규 표현식의 첫 번째 부분은 마지막 문자 - 숫자 - 쉼표 콤보까지 모든 것을 (.*)과 일치; 두 번째는 공백 쉼표 콤보와 일치합니다. 쉼표는 (괄호 바깥에 있으므로) 삭제되고 %으로 바뀝니다.

관련 문제