我正在尝试将一个大文件读入 R 中,该文件由“非”符号 (Ø) 分隔。我通常做的是使用文本编辑将此符号更改为分号,并将其另存为 csv 文件,但此文件太大,当我尝试这样做时,我的计算机不断崩溃。我尝试过以下选项:
my_data <- read.delim("myfile.txt", header = TRUE, stringsAsFactors = FALSE, quote = "", sep = "\t")
这会产生一个只有一行的数据框。我知道这是有道理的,因为我的文件不是用制表符分隔的,而是用非符号分隔的。但是,当我尝试将 sep 更改为 Ø 或\Ø 时,我收到以下消息:
Error in scan(file, what = "", sep = sep, quote = quote, nlines = 1, quiet = TRUE, :
invalid 'sep' value: must be one byte
我也尝试过
my_data <- read.csv2(file.choose("myfile.txt"))
和
my_data <- read.table("myfile.txt", sep="\¬", quote="", comment.char="")
得到类似的结果。我搜索过与我类似的选项,但他的那种分隔符并不常用。
最佳答案
您可以尝试阅读它的pipe
d 翻译。
设置:
writeLines("a¬b¬c\n1¬2¬3\n", "quux.csv")
工作内容:
read.csv(pipe("tr '¬' ',' < quux.csv"))
# a b c
# 1 1 2 3
如果逗号不适合您,这与其他替换字符同样有效:
read.table(pipe("tr '¬' '\t' < quux.csv"), header = TRUE)
# a b c
# 1 1 2 3
tr
实用程序可在所有 Linux 上使用,它应该在 Macos 上可用,并且它包含在 Windows 的 Rtools 中(以及 git-bash,如果有的话)。
如果使用 pipe
时出现问题,您始终可以使用 tr
工具创建另一个文件(替换文本编辑器步骤):
system2("tr", c("¬", ","), stdin="quux.csv", stdout="quux2.csv")
read.csv("quux2.csv")
# a b c
# 1 1 2 3
关于将txt文件读入R,以 "not"符号(Ø)分隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64172815/