我正在尝试从这个网站阅读csv。每行都以t
结尾,这会导致read.delim()
和read.table()
看到数据行比标题行多 1 列,从而导致问题。
我可以使用以下代码轻松地从行尾删除t
:
file.set <- "data_source.txt"
temp <- file.set %>%
readLines() %>%
sub(" \t$", "", .) %>%
writeLines()
我无法弄清楚的是如何在不使用writeLines()
写出文件的情况下将sub()
命令的结果通过管道传输到read.delim()
。我尝试了以下代码:
temp <- file.set %>%
readLines() %>%
sub(" \t$", "", .) %>%
read.delim(quote = NULL)
# Error in file(file, "rt") : invalid 'description' argument
temp <- file.set %>%
readLines() %>%
sub(" \t$", "", .) %>%
writeLines() %>%
read.delim(quote = NULL)
# [prints info from file.set to console]
# Error in read.table(file = file, header = header, sep = sep, quote = quote, :
# 'file' must be a character string or connection
问题可能是我不了解如何正确使用连接(或者使用连接只是错误的方法(。我发现的关于在 R 中使用连接的教程主要涉及从远程数据库获取数据,这让我认为我做错了。
在读入数据后,您实际上不需要将数据写出。您可以将其直接通过管道传输到read.delim
的text=
参数。例如
temp <- file.set %>%
readLines() %>%
sub(" \t$", "", .) %>%
read.delim(text = .)
我无法打开您使用的实际文件(该行对我不起作用(,但通常使用额外列读取数据然后在导入后删除会更容易。我不清楚您最初阅读文件时遇到的"问题"实际上是什么。