2017-12-12 58 views
2

354 (a1-a354) 개의 열이있는 데이터 프레임을 분할하려고합니다. 예 : 그러나 같은여러 개의 열을 한 번에 나누기 R

내가 한 번에 하나의 열을 사용하는 경우이 완벽하게 작동
df1<- extract(df1,1, c("D","M"), "(.)(.)",convert=TRUE) 

는 (내가 열 이름에 대해주의를 해달라고) : 현재

a1 a2 
1 aa aa 
2 bb bb 
3 cc cc 

, 나는 다음과 같은 코드를 사용하고 나는 354 개의 열을 가지고 있는데, 나는 그것을 반복하려고 노력하고있다. 지금까지, 나는 lapply와 함께 사용할 수 있도록 함수를 만들려고 시도했다. 나는 for-loop를 시도했다. 난 항상 오류를 얻을 : 데이터 소스는 사전

나는 다음과 같은 노력 해왔다해야합니다 : I 시도

colseparator <- function(x) { 
df1<- extract(df1,x, c("D","M"), "(.)(.)",convert=TRUE) 
} 

다른 것은 나의 방법

for (x in c(7,9,11)){ 
     df1<- extract(df1,x, c("D","M"), "(.)(.)",convert=TRUE) 
    } 

없음이 작동하지 않습니다이다, 분명히 뭔가 잘못하고있다. 도움이 될 것입니다.

답변

0

몇 가지 옵션이 있습니다. 한 가지 방법은, 함께 행을 pastegsub를 사용하여 구분 기호를 만들고 read.table/read.csv

read.table(text=gsub('(?<=[a-z])(?=[a-z])', ',', do.call(paste, df1), 
      perl = TRUE), header = FALSE, stringsAsFactors=FALSE, sep=',') 

읽을하는 것 또는 우리는 열을 통해 반복에 의해 strsplit로 분할 한 후 rbind

do.call(rbind, lapply(df1, function(x) do.call(rbind, strsplit(x, "(?<=.)", perl = TRUE)))) 
+0

안녕 수 아쿤! ** ** 굵은'\t V1 V2 V3 V4 1 AADDEE 2 BBEEFF 3 CCFFGG '그것은 여섯이 있어야합니다, 첫 번째는 솔루션에 대한 감사 일하고 있었다, 그러나 지금은 나에게 다음과 같은 출력을 제공하기 시작했다 열,하지만 그것은 단지 4 개 있습니다 – GWhiz

+0

@ GWhiz 코멘트에서 분명하지 않다. 게시물의 예제는 소문자로 표시됩니다. 지금, 주석에는 대문자가 있습니다. 확실하지 않습니다. – akrun

+0

하이 커크 (Akrun), 대문자 데이터의 코드를 수정했습니다 :'splitcols <- read.table (text = gsub ('(? <= [AZ])', ',', do.call (페이스트 subsetgeno4) 펄 = TRUE), 헤더 = FALSE, stringsAsFactors = FALSE 9 월 = ',') '나에게 다음과 같은 출력을 준
'V1 V2 V3 V4
1 AADDEE
2 BBEEFF
3 CCFFGG' – GWhiz