使用readr时如何使用通配符定义col_type?
How to use wildcards to define col_type when using readr?
我前几天刚问过,如何在使用readr
包时设置特定的列类型。 big integers when reading file with readr in r
有没有办法通过通配符定义列名?在我的例子中,有时我有几个以 Intensity
开头的列和一个附录,具体取决于实验。如果您事先不知道使用了哪些项目名称,则很难在函数中使用 read_tsv
。
所以像 col_types = cols('Intensity.*' = col_double())
这样的东西会很棒。
有人知道如何获得此功能吗?
编辑:
也许像阅读前两行,names
中的 grep
'Intensity',然后以某种方式创建此参数,如 cols(Intensity=col_double(), 'Intensity pg'=col_double(), 'Intensity hs'=col_double())
。
但是我不知道如何即时创建这个参数值。
我根据 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
.
的程序生成的特殊文件时会使用该函数
我前几天刚问过,如何在使用readr
包时设置特定的列类型。 big integers when reading file with readr in r
有没有办法通过通配符定义列名?在我的例子中,有时我有几个以 Intensity
开头的列和一个附录,具体取决于实验。如果您事先不知道使用了哪些项目名称,则很难在函数中使用 read_tsv
。
所以像 col_types = cols('Intensity.*' = col_double())
这样的东西会很棒。
有人知道如何获得此功能吗?
编辑:
也许像阅读前两行,names
中的 grep
'Intensity',然后以某种方式创建此参数,如 cols(Intensity=col_double(), 'Intensity pg'=col_double(), 'Intensity hs'=col_double())
。
但是我不知道如何即时创建这个参数值。
我根据 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
.