2016-08-23 3 views
1

私は数日前にreadrパッケージを使用するときに特定の列タイプを設定する方法を尋ねました。 big integers when reading file with readr in rreadrを使用するときにワイルドカードを使用してcol_typeを定義する方法は?

ワイルドカードで列名を定義する方法はありますか?私の場合は、実験によってはIntensityで始まる列と付録があります。どのプロジェクト名を使うのかわからない場合は、関数内でread_tsvを使うのは難しいです。

だから、col_types = cols('Intensity.*' = col_double())のようなものはすばらしいでしょう。

誰でもこの機能を利用するにはどうすればいいですか?

EDIT:たぶん 、最初の2行を読んnamesgrep「強度」と、その後何とかcols(Intensity=col_double(), 'Intensity pg'=col_double(), 'Intensity hs'=col_double())のように、このパラメータを作成するようなもの。 しかし、私はどのようにこのパラメータ値を即座に作成するのか分かりません。

+3

おそらく、あなたは 'txt < - " foo、bar1、bar2 \ n1,2,3 "にsthをビルドすることができます; lukeA

+0

ありがとう、それは動作します。私は 'col_types'にリストを提供することができないことを知りませんでした。完璧。私はクレジットを与えることができるので、あなたは答えを書くだろうか? – drmariod

+0

'cols'で指定をラップすると、' .default'を設定することができます。これはあなたのタイプのカラム数に応じて便利です。 – alistaire

答えて

1

私はだから私は私の特別なを読むとき、私が使用する新しい関数にコメントから単一の行を適応

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)) 
} 

... lukeAのコメントに基づいて、私の質問を解決する答えを追加ファイルはMaxQuantと呼ばれるプログラムによって生成されます。

関連する問題