2017-01-06 1 views
-1

나는 파이썬으로 작성된 목록을 csv의 셀에 임베드했습니다. 엘리먼트를 R에서 datatable로 강제 변환하려하지만 텍스트가 포함 된 특정 벡터에 붙어 있습니다. 그 이유는 strsplit()이 ","로 나뉘어서 숫자 값으로 잘 작동하는 반면, 텍스트에 포함 된 쉼표는 한 벡터를 다른 벡터보다 길게 만듭니다. 아래에서는 재현 가능한 예제를 동봉했습니다. 제공 할 수있는 도움에 감사드립니다.R에서 파이썬 목록을 분할하는 방법

x <- c("['SPOSORSHIP FOR CONVENTION']", "['GENERAL CONTRIBUTION', 'GENERAL CONTRIBUTION']", 
"['WOMEN & POPULATION']", "['PROGRAM SUPPORT', 'PROGRAM SUPPORT']", 
"['MULTIPLE GRANTS FOR MULTIPLE PURPOSES']", "['IMPROVING NATIONAL PARKS']", 
"['general operating support']", "['Civic Engagement', 'Animal Welfare', 'Religion']", 
"['RESEARCH SUBAWARD']", "['OPERATIONAL SUPPORT', 'OPERATIONAL SUPPORT']", 
"['PROMOTE FILM INDUSTRY']", "['TO SUPPORT PUBLIC AFFAIRS PROGRAMS', 'TO SUPPORT PUBLIC AFFAIRS PROGRAMS', 'TO SUPPORT PUBLIC AFFAIRS PROGRAMS', 'TO SUPPORT PUBLIC AFFAIRS PROGRAMS', 'TO SUPPORT PUBLIC AFFAIRS PROGRAMS', 'TO SUPPORT PUBLIC AFFAIRS PROGRAMS']", 
"['10TH ANNUAL GREAT LAKES RESTORATION CONFERENCE AND PETER WEGE TRIBUTE LUNCHEON']", 
"['Conservation', 'Conservation']", "['FOR GENERAL OPERATING SUPPORT']" 
) 
+0

작은 따옴표로 묶인 내용은 모두 새 문자 벡터의 고유 요소 여야합니다. 그래서 strsplit에 유사 할 것이고 unlist ... – StanO

+0

문제를 다시 만들고 문제를 재현하는 데 필요한 최소한으로 만 질문의 크기를 줄일 수 있습니까? –

답변

1

아마도 도움이 될 것입니다. 내가 먼저

cleeaned_text = gsub("(^\\['+)|('\\]\\b)",'',x) #remove '[ and ]' 
unlist(strsplit(cleeaned_text, "', '")) #split on ', ' 
[1] "SPOSORSHIP FOR CONVENTION"              
[2] "GENERAL CONTRIBUTION"               
[3] "GENERAL CONTRIBUTION"               
[4] "WOMEN & POPULATION"                
[5] "PROGRAM SUPPORT"                
[6] "PROGRAM SUPPORT"                
[7] "MULTIPLE GRANTS FOR MULTIPLE PURPOSES"           
[8] "IMPROVING NATIONAL PARKS"              
[9] "general operating support"              
[10] "Civic Engagement"                
[11] "Animal Welfare"                 
[12] "Religion"                  
[13] "RESEARCH SUBAWARD"                
[14] "OPERATIONAL SUPPORT"               
[15] "OPERATIONAL SUPPORT"               
[16] "PROMOTE FILM INDUSTRY"               
[17] "TO SUPPORT PUBLIC AFFAIRS PROGRAMS"            
[18] "TO SUPPORT PUBLIC AFFAIRS PROGRAMS"            
[19] "TO SUPPORT PUBLIC AFFAIRS PROGRAMS"            
[20] "TO SUPPORT PUBLIC AFFAIRS PROGRAMS"            
[21] "TO SUPPORT PUBLIC AFFAIRS PROGRAMS"            
[22] "TO SUPPORT PUBLIC AFFAIRS PROGRAMS"            
[23] "10TH ANNUAL GREAT LAKES RESTORATION CONFERENCE AND PETER WEGE TRIBUTE LUNCHEON" 
[24] "Conservation"                 
[25] "Conservation"                 
[26] "FOR GENERAL OPERATING SUPPORT" 
+1

그게 다야! 감사!!! – StanO

1

두 솔루션 ','을 '[및'] 다음은에 분할 제거 :

# with stringr 
library(stringr) 
a <- str_replace_all(x, "\\['|'\\]", "") %>% 
    str_split("', '") %>% 
    unlist 

# with base 
b <- unlist(strsplit(gsub("\\['|'\\]", "", x), "', '")) 

identical(a, b) 

결과 :

[1] "SPOSORSHIP FOR CONVENTION" 
[2] "GENERAL CONTRIBUTION" "GENERAL CONTRIBUTION" 
[3] "WOMEN & POPULATION" 
... 

트릭 먼저 문자열을 트림하는 것입니다 쉼표 대신 ', '에서 분리하십시오.

관련 문제