2016-08-15 17 views
0

를 사용하여 문자를 무시 나는 R.에서 readr 패키지에서 read_fwf를 사용하여 문자를 건너 뛸 수있는 쉬운 방법이 있는지 알고 싶습니다R readr :: read_fwf fwf_widths

예를 들어,의 예제 중 하나를 수정 기본 read.fwf 기능을하지만 잘 작동 사용

Error: Begin offset (2) must be smaller than end offset (-1) 

: 문서

library(readr) 
fwf_sample <- system.file("extdata/fwf-sample.txt", package = "readr") 
read_fwf(fwf_sample, fwf_widths(c(2, -3,2, 3))) 

는 오류가 발생

read.fwf(fwf_sample, widths = c(2,-3,2,3)) 

# V1 V2 V3 
#1 12 67 890 
#2 12 67 890 
#3 12 67 890 
#4 12 67 890 
#5 12 67 890 

readr::read_fwf을 사용하여이 동작을 모방 할 수있는 방법이 있습니까? (대부분 성능상의 이유로 관심이 있습니다).

+0

없음 오류를 readr 버전 1.0.0을 사용하여 내 machine.b에. R 3.3.1. 반면에 부정은 존중받지 못하고 4 열을 얻습니다. –

+0

나는 R 3.3.1과 readr 0.2.2로 우분투 64 비트를 사용했다. 나는 1.0.0으로 업그레이드했고 지금 같은 이슈를 얻는다. 나는 잠시 read.fwf를 고수 할 것이라고 생각한다. – lucacerone

답변

1

도움말 페이지 fwf_positions를 사용하여 제안 :

> read_fwf(fwf_sample, fwf_positions(c(1, 5, 8), c(2, 7, 10), col_names=paste0("V", 1:3))) 
Parsed with column specification: 
cols(
    V1 = col_character(), 
    V2 = col_character(), 
    V3 = col_character() 
) 
# A tibble: 3 x 3 
    V1 V2 V3 
    <chr> <chr> <chr> 
1 Jo Sm ith 
2 Ma Ha rtf 
3 Ev No lan 
+0

고맙습니다. 아마 유일한 방법입니다. 비록이 솔루션이 매우 장황하기 때문에별로 마음에 들지 않지만 ... – lucacerone

+0

컴퓨터 프로그래밍에서 '자세한 정보'를 얻을 수있는 자격에 대해 매우 이상한 개념이 있습니다. –

+0

두 개의 벡터를 만들 필요없이 음수를 사용하여 열을 건너 뛰는 것이 더 낫습니다. 나는 단지 read.fwf를 사용해야합니다. 매우 직관적이라고 생각합니다 :) – lucacerone