2016-08-05 3 views
0

pdftoolsパッケージでRのpdfを読み終えたら、リストのすべての要素がテーブルのような構造を持つリストが得られます。リストの各要素を集約したいと思いますそのテーブル構造をデータフレームに維持する。私はこれを試してみました https://drive.google.com/open?id=0Bydt25g6hdY-b0NwaDF1NWE0NkUリストの要素をテーブルに変換する

ここでは、生成されたtxtファイルへのリンクを持っている

table <- list(0) 
for (i in test5) { table <- append(table, i)} 

をしかし、私は同じリストを取得します。

私は、各列が変数であり、各行が観測であり、可能であれば日付行を削除して列に干渉しないようにすることができるようにしたいと考えています。ここで

dput(table[1:3])

list("                   ", 
c("\r\n Thu 04/21/2016    ", "\r\n _No Call Type Attached        0 00:00 00:00  00:00  00:00 00:00  0  0%  0% 00:00  00:00\r\n IEX Billing English       12.5% 1 03:17 00:55  00:03  04:15 00:00  2 200%  0% 00:27  00:00  1 100%\r\n IEX VOB English        50.0% 4 03:15 01:29  01:12  05:57 00:00  1 25%  0% 05:56  00:00  4 100%\r\n IEX VOB Spanish        37.5% 3 03:59 00:20  00:28  04:48 00:00  3 100%  0% 00:20  00:00  3 100%\r\n " 
), "\r\n") 
+0

、あなたはそのようなリストを初期化するべきではありません。代わりに 'x = list()'を使用してください – Frank

+0

ありがとうございます@フランク、私はそれを続けます。 – Carlos

答えて

1

の出力はreadLines()を使用して文書をスキャンを検討し、次に文字のリストに移行するために、空白で行を分割します。 Filter()呼び出しを使用して、1文字と空の要素を削除します。アトミックベクトルとは異なり

file <- "C:\\Path\\To\\Text.txt" 

# CONNECT TO FILE, READ LINES 
con <- file(description=file, open="r") 
pdftext <- readLines(con, warn=FALSE) 
close(con) 

# FILTER OUT ONE-CHARACTER ELEMENTS 
pdftext <- Filter(function(x) nchar(x)>1, pdftext) 

# SPLIT LINES BY WHITESPACE/FILTER ONE-CHARACTER ELEMENTS 
datalines <- lapply(pdftext, function(x) { 
       tmp <- strsplit(x, "\\s+")[[1]] 
       Filter(function(l) nchar(l)>1, tmp) 
}) 

# FILTER EMPTY ELEMENTS 
datalines <- Filter(length, datalines) 

# FILL IN NAs TO FIT TABLE COLS (USING 16, LARGEST LENGTH) 
datalines <- lapply(datalines, function(x) { 
    if(length(x) < 16) { x <- c(x, rep(NA, 16 - length(x))) 
    } else { 
    x 
    } 
}) 

# BIND ALL LINES INTO CHARACTER MATRIX 
datamatrix <- do.call(rbind, datalines) 

出力

#  [,1] [,2]   [,3]  [,4]  [,5]  [,6]  [,7]  [,8]  [,9]  [,10]  [,11] [,12] 
# [1,] "Thu" "04/21/2016" "Direct" "Internal" "Calls:" "Direct" "External" "Calls:" "Outbound" "Calls:" NA  NA  
# [2,] "_No" "Call"  "Type" "Attached" "00:00" "00:00" "00:00" "00:00" "00:00" "0%"  "0%"  "00:00" 
# [3,] "IEX" "Billing" "English" "12.5%" "03:17" "00:55" "00:03" "04:15" "00:00" "200%"  "0%"  "00:27" 
# [4,] "IEX" "VOB"  "English" "50.0%" "03:15" "01:29" "01:12" "05:57" "00:00" "25%"  "0%"  "05:56" 
# [5,] "IEX" "VOB"  "Spanish" "37.5%" "03:59" "00:20" "00:28" "04:48" "00:00" "100%"  "0%"  "00:20" 
... 

Character Matrix Output

+0

これはまさに私が探していたものです。ありがとうございます@パルフェット – Carlos

+0

素晴らしい!お役に立てて嬉しいです。 – Parfait

関連する問題