最近、Rさんと非常に苦労しています。
私はエキスパートユーザーではありませんが、Rを使用してプレーンテキスト(_.txt
_)ファイルを読み取り、その各行をキャプチャしようとしています。その後、それらの行を処理して、テキストにいくつかの中断と変更を加えたいと思います。
これが私が使っているコードです:
_fileName <- "C:/MyFolder/TEXT_TO_BE_PROCESSED.txt"
con <- file(fileName,open="r")
line <- readLines(con)
close(con)
_
テキストを読み、行は完全に分割されます。しかし、私は作成されたオブジェクトline
がどのように機能するか理解していません。
このコードで作成されたオブジェクトline
には、クラスcharacter
と長さ_[57]
_があります。 _line[1]
_と入力すると、最初の行のテキストがそのまま表示されます。しかし、私がタイプした場合
_length(line[1])
_
_[1]
_を返します。
518を実際に含む_length == 1
_のこの文字列を_length == 518
_の文字列に変換する方法を知りたいです。
誰かが私が間違っていることを知っていますか?
必ずしもreadLines()
関数を使用する必要はありません。調べてみたところ、関数scan()
も見つかりましたが、518文字の不変文字列と同じ状況でしたが、_length == 1
_で終わりました。
私は私の疑いについて十分に明確になったと思います。英語が下手でごめんなさい。
txt
がreadLines
で読み取ったデータの1行目のテキストであるとします。
次に、それぞれをWordである別々の文字列に分割する場合は、各単語間のスペースで分割する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
最初にそのコードを1行に圧縮できます。他の3行は、不要なオブジェクトを作成するだけです。
line <- readLines("C:/MyFolder/TEXT_TO_BE_PROCESSED.txt")
行ごとにスペースで区切られた単語の数を知りたい場合
words <- sapply(line,function(x) length(unlist(strsplit(x,split=" "))))
上記のlength
引数を省略すると、各行から単語の文字ベクトルのリストが得られます。
どうですか:
con <- file(fileName, open='r')
text <- readLines(con)[[1]]
ファイルの最初の行のテキストを取得します。