readr:从列中提取值

时间:2017-08-13 16:52:04

标签: r tidyverse readr rlang

我正在使用readr' s read_delim,如此:

focals <- read_delim('~/all_focals2.txt', delim='\t', 
                     col_names=c("1", "focal", "2", "model"),
                     col_types=cols_only(focal = col_double(), model = col_character()))

在我的数据中,&#39;焦点&#39;列包含如下数据:

55.0 mm
7.8 mm
16.0 mm

等等。我希望将数据作为双重数据,所以我想忽略&#39;毫米&#39;后缀。

我找到了this bug comment,这似乎表明今天在readr中实际上是不可能的,除非将列作为字符串读取然后转换为第二步。

但是,我只能假设必须有一种方法来编写自定义列规范,对吧?可能可以编写自己的col_focal_length()函数,该函数在幕后col_double()构建,以便从一开始就实现正确的解析?

编辑覆盖解决方案:

focals$focal <- as.double(gsub(" mm$", "", focals$focal))

但正如我所说的那样,我希望在数据集的开始时保持正确...

1 个答案:

答案 0 :(得分:0)

试试这个:

        as.double(parse_number(focals$focal))

如果这项工作让我们知道。谢谢