使用readr时如何使用通配符定义col_type?

时间:2016-08-23 11:25:45

标签: r grep wildcard readr

我刚才问过,在使用readr包时如何设置特定的列类型。 big integers when reading file with readr in r

有没有办法通过通配符定义列名?在我的情况下,我有时会有几列以Intensity开头,而附录则取决于实验。如果您不知道使用哪个项目名称,则很难在函数中使用read_tsv

col_types = cols('Intensity.*' = col_double())这样的东西会很棒。

有人知道如何获得此功能吗?

修改 也许就像阅读前2行,grep'强度'在names中,然后以某种方式创建此参数,如cols(Intensity=col_double(), 'Intensity pg'=col_double(), 'Intensity hs'=col_double())。 但是我不知道如何动态创建这个参数值。

1 个答案:

答案 0 :(得分:2)

我根据lukeA的评论添加了解决我问题的答案......

read_MQtsv <- function(file) {
  require('readr')
  jnk <- read.delim(file, nrows=1, check.names=FALSE)
  matches <- grep('Intensity|LFQ|iBAQ', names(jnk), value=TRUE)
  read_tsv(file, 
           col_types=setNames(
             rep(list(col_double()), length(matches)), 
             matches))
}

所以我将注释中的单行调整为新函数,我将在阅读由MaxQuant程序生成的特殊文件时使用。