2016-08-15 6 views
0

を使用して文字を無視しますドキュメントR readr :: read_fwf私は例の1つを変更、例えばR.</p> <p>でreadrパッケージからread_fwfを使用して文字をスキップする簡単な方法があるかどうかを知りたいfwf_widths

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機能を使用して

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

は、しかし、うまく動作します:

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と読者0.2.2でUbuntu 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

2つのベクトルを構築するのではなく、負の数を使って列をスキップするのが好きです:)私はちょうどread.fwfに使用する必要があります。私は非常に直感的です:) – lucacerone

関連する問題