最近,我在使用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/

10-12 17:56