2017-01-16 11 views
2

복잡한 함수를 lapply로 생성하여 데이터 프레임 (outputDfList)의 큰 목록을 rbind하려고합니다. 큰 테이블.R : pi [[j]]의 오류 : 범위 밖의 첨자 - 데이터 프레임 목록의 rbind

df1=data.frame("randomseq_chr15q22.1_translocationOrInsertion", "chr15", "63126742") 
names(df1)=NULL 
df2=df1=data.frame("chr18q12.1_chr18q21.33_large_insertion", "chr18 ", "63126741") 
names(df2)=NULL 
outputDfList=list(df1,df2) 

내 코드는 내가받은 오류 메시지

do.call(rbind, outputDfList) 

입니다 :

Error in pi[[j]] : subscript out of bounds 

나는 각 dataframes의 열 번호를 확인 두배 그들은 모두 당신에 의해 outputDfList 다시 만들 수 있습니다 같은. 나는 또한 디버그를 위해 "options (error = recover)"를 사용하려고 시도했지만 정확한 문제를 해결하기에 익숙하지 않았다. 어떤 도움을 주셔서 감사합니다. 고맙습니다.

+0

오류 메시지를 재현 할 수 없습니다. 문제를 재현하기 위해 최소한의 예를 만들고 여기에 재현 할 정확한 코드/데이터를 게시해야합니다. [reprex가 도움이 될 수 있습니다.] (http://jennybc.github.io/reprex/) –

+0

@KonradRudolph 의견을 보내 주셔서 감사합니다. 당신 말이 맞아요. 데이터 프레임의 긴 이름을 다시 추가 했으므로 오류가 표시되어야한다고 생각합니다. – Helene

+0

불행하게도 데이터가 어떤 모양인지 정확하게 알 수 없기 때문에이 방법으로는 충분하지 않습니다. 게시 한 데이터에서 데이터를 재구성하면 명령이 작동합니다. 관련 데이터를 입력 할 수 있었습니까? –

답변

1

업데이트 후 잘못된 열 이름이있는 것 같습니다. 데이터 프레임 열 이름은 null이 아니어야합니다.

이를 수정 한 후, 코드는 작동 :

for (i in seq_along(outputDfList)) { 
    colnames(outputDfList[[i]]) = paste0('V', seq_len(ncol(outputDfList[[i]]))) 
} 

do.call(rbind, outputDfList) 
#          V1  V2  V3 
# 1 chr18q12.1_chr18q21.33_large_insertion chr18 63126741 
# 2 chr18q12.1_chr18q21.33_large_insertion chr18 63126741 

그러나,이 상황은 처음에 어떻게 발생했는지 의아해 해요. 또한, 당신의 코드를지고있어 오류 메시지가 여전히 당신의 별개의 입니다 : match.names에서

오류 (clabs, 이름 (XI)) :
이름은 이전 이름 ​​

일치하지 않습니다
+0

답장을 보내 주셔서 감사합니다. 나는 그것에 당혹 스럽다. 그러나 내 데이터 프레임에 대한 열 이름이 필요하다는 것은 절대적으로 옳다. 필자는 데이터 프레임 목록을 생성 한 함수에이를 추가했으며 작동했습니다. 고맙습니다! – Helene