最近我在使用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]
。
我想知道如何将这个长度为1
的字符串转换成实际包含518
的长度为518
的字符串。
有人知道我做错了什么吗?
我不一定需要使用readLines()
函数。我做了一些研究,也找到了scan()
函数,但我最终得到了一个不可变的字符串,长度为518
,但是length == 1
。
希望我对我的问题已经表达清楚了。抱歉我的英语不好。
readLines
返回 "一个字符向量,其长度为读取的行数。"(来自?readLines
)。这就是为什么每行的长度为1。你尝试过使用read.csv
或read.table
吗? - Rich Scrivenstrsplit
函数即可。 - Rich Scrivennchar(line[1])
,它将给出列表第一个元素(即文件的第一行)中字符的数量。length(list)
告诉你从文件中检索到的行数;通过给它length(list[1])
,你正在询问列表的一个切片中元素的数量,这个切片恰好只有一个元素(可能是长度为518或其他值的字符串)。 - r2evansnchar(line[1])
返回字符串中的字符数。但我想知道如何逐个访问这些字符。strsplit
函数无法满足我的需求。最好的方法是说,我想逐个读取line
的每一行(即line[1]
、line[2]
、...、line[n]
)中的每个字符(空格或非空格),并进行一些重新排列。 - user3521631?substr
和?regexp
。 - r2evans