最近,我在使用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行中的文本。
然后,如果要将其拆分为单独的字符串(每个字符串是一个单词),则可以使用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
关于r - 在R中处理readLines()函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23001548/