【发布时间】:2016-08-23 11:25:45
【问题描述】:
前几天刚问过,使用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())。
但我不知道如何动态创建这个参数值。
【问题讨论】:
-
也许你可以建立在
txt <- "foo,bar1,bar2\n1,2,3";matches <- grep("^bar\\d+", strsplit(readLines(textConnection(txt), n=1),",",T)[[1]], value=T);read_csv(txt, col_types=setNames(rep(list(col_character()), length(matches)), matches))之上。 -
谢谢,这行得通。我不知道我可以向
col_types提供一个列表。完美的。你会写一个答案,所以我可以给予信任?! -
如果您将规范包装在
cols中,您可以设置.default,这可能很有用,具体取决于您拥有的类型的列数。 -
从整数到文本非常混合。所以我猜
.default不会有太大帮助。