9

私は最近Rで非常に苦労しています。

私はエキスパート ユーザーではありませんが、R を使用してプレーン テキスト ( .txt) ファイルを読み取り、その各行をキャプチャしようとしています。その後、それらの行を処理し、テキストにいくつかの区切りと変更を加えたいと思います。

私が使用しているコードは次のとおりです。

fileName <- "C:/MyFolder/TEXT_TO_BE_PROCESSED.txt"
con <- file(fileName,open="r")
line <- readLines(con)
close(con)

テキストを読み取り、改行が完全に行われます。しかし、作成されたオブジェクトがどのように機能するのかわかりませんline

このコードで作成されたオブジェクトlineには、 class:characterと length があり[57]ます。入力line[1]すると、最初の行のテキストが正確に表示されます。しかし、私がタイプすると

length(line[1])

それは私を返します[1]

length == 1実際に 518 を含むこの文字列 を の文字列に変換する方法を知りたいですlength == 518

私が間違っていることを誰かが知っていますか?

必ずしも関数を使用する必要はありませんreadLines()。私はいくつかの調査を行い、関数も見つけましたscan()が、518文字の不変文字列の同じ状況で終了しましたがlength == 1.

私の疑いについて十分に明確であることを願っています。下手な英語でごめんなさい。

4

3 に答える 3

5

最初にそのコードを 1 行に要約できます。残りの 3 行は必要のないオブジェクトを作成するだけです。

line <- readLines("C:/MyFolder/TEXT_TO_BE_PROCESSED.txt")

行ごとにスペースで区切られた単語の数を知りたい場合

words <- sapply(line,function(x) length(unlist(strsplit(x,split=" "))))

上記のlength引数を省略すると、各行から単語の文字ベクトルのリストが取得されます。

于 2014-04-11T01:35:50.780 に答える
5

を使用して読み取っtxtたデータの 1 行目のテキストを としますreadLines
次に、それぞれが単語である個別の文字列に分割する場合は、strsplit各単語間のスペースで分割する を使用できます。

> txt <- paste0(letters[1:10], LETTERS[1:10], collapse = " ")
> txt
## [1] "aA bB cC dD eE fF gG hH iI jJ"   ## character vector of length 1
> length(txt)
[1] 1
> newTxt <- unlist(strsplit(txt, split = "\\s"))  ## split the string at the spaces
> newTxt
## [1] "aA" "bB" "cC" "dD" "eE" "fF" "gG" "hH" "iI" "jJ"
## now the text is a character vector of length 10  
> length(newTxt)
[1] 10
于 2014-04-11T03:41:01.060 に答える
1

どうですか:

con <- file(fileName, open='r')
text <- readLines(con)[[1]]

ファイルの最初の行のテキストを取得します。

于 2016-06-04T16:11:45.330 に答える