如何在 R 中将输出从 sub() 管道传输到 read.table()



我正在尝试从这个网站阅读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.delimtext=参数。例如

temp <- file.set %>% 
readLines() %>% 
sub(" \t$", "", .) %>% 
read.delim(text = .)

我无法打开您使用的实际文件(该行对我不起作用(,但通常使用额外列读取数据然后在导入后删除会更容易。我不清楚您最初阅读文件时遇到的"问题"实际上是什么。

相关内容

最新更新