fread
函数来自于 data.table
包,通常可以在读取文件时自动确定列分隔符 (sep
)。
例如,在这里,fread
自动检测到 |
作为列分隔符:
library(data.table)
fread(paste(c("A|1", "B|2", "C|3"), collapse = "\n"))
# V1 V2
# 1: A 1
# 2: B 2
# 3: C 3
但是我该如何检索出最终由fread
使用的列分隔符(此处为|
)?
fread
函数来自于 data.table
包,通常可以在读取文件时自动确定列分隔符 (sep
)。
例如,在这里,fread
自动检测到 |
作为列分隔符:
library(data.table)
fread(paste(c("A|1", "B|2", "C|3"), collapse = "\n"))
# V1 V2
# 1: A 1
# 2: B 2
# 3: C 3
但是我该如何检索出最终由fread
使用的列分隔符(此处为|
)?
正如Henrik所提到的,如果选择verbose = TRUE
,这些信息将被打印到控制台。您可以使用以下方法捕获有关分隔符打印的信息:
library(magrittr)
example <- paste(c("A|1", "B|2", "C|3"), collapse = "\n")
capture.output(fread(example, verbose = TRUE) %>% {NULL}) %>%
.[grepl('Detecting sep', .)]
#[1] "Detecting sep ... '|'"
fread
查找分隔符的描述实现自己的分隔符查找器:
默认使用集合
[,\t |;:]
中在引号 (""
) 区域之外,位于第autostart
行的第一个字符作为分隔符
%>% {NULL}
,似乎仍然可以工作..?OP/用户还可以添加一步 %>% sub("^.* '(.)'$", "\\1", x = .)
来提取字符。 - Frank%>% {NULL}
,整个 data.table
将被放入 capture.output(...)
的输出中。 - IceCreamToucancapture.output(dat <- fread(example, verbose = TRUE)) %>% ...
,除非我还漏掉了什么。 - Frank
fread
中的verbose
参数吗?例如:fread(paste(c("A|1", "B|2", "C|3"), collapse = "\n"), verbose = TRUE)
,会显示出"Detecting sep ... '|'"。你可以考虑让你的问题更具体一些,因为你目前有相当多不同(且广泛)的问题。同时,请提供一个“最小化”的示例。祝好! - Henrik