0

データフレームからいくつかの列を正規表現で選択したい。問題は、別のフレームに保存されている単語のペアを使用してそうすることです。より具体的には、mycounts データ フレームの列名:

aa1 aa2 aa3 bb1 bb2 bb3 ff1 ff2 ff3 cc1 cc2 cc3 dd1 dd2 dd3

そして、次のペア (mypairs) を別のフレームに抽出したい:

aa bb
aa cc
bb cc
cc dd
dd ff

ここで、aa と bb は、列が mycounts から選択される開始パターンを示します。

次のように、必要なパターンを手動で配置して取得できます。

tmpdf <- subset(mycounts.test, select=(names(mycounts)[grep('^aa|^bb',names(mycounts))]))

tmpdf で何かを実行 mypairs から次のペアを選択 mycounts から列を抽出 tmpdf などで同じことを再度実行

ただし、常に出力列のパターンを mypairs で強制することをお勧めします。「|」で dd から ff 列を取得する代わりに grep で、ff から dd を取得します。だから私はやっている:

tmpdf1 <- subset(mycounts.test, select=(names(mycounts)[grep('^dd',names(mycounts))]))
tmpdf2 <- subset(mycounts.test, select=(names(mycounts)[grep('^ff',names(mycounts))]))
tmpdf <- cbind(tmpdf1, tmpdf2))

最も重要なことは、mypairs の最初の列だけから単純に正規表現を作成しても機能しないことです。

for (i in 1:nrow(mypairs)) { foo <- paste('^', mypairs[i,1], sep=""); print(grep(foo, mycounts)) }

これは私が立ち往生しているところです。助けてくれて本当にありがとうございます。

4

1 に答える 1

4

names最後のコマンドで関数を使用しませんでした:

交換

print(grep(foo, mycounts))

print(grep(foo, names(mycounts)))
于 2012-11-28T16:27:47.590 に答える