0

作業名とテスト セットを使用して、データをサブセット化しようとしています

ws_data <- subset(data, grepl(paste0("v*[0-9]_",ws_names, collapse="|" ),
           rownames(data))==TRUE)

うまくいくようですが、次のような行名の場合

"(Difluoromethoxy)trifluoromethane"

スキップされるだけです。Rで正式な名前として括弧を使用できますか? 行名を変更しないでこの問題を解決するにはどうすればよいですか? 前もって感謝します!

データ例

64 | v0064_(クロロ)(トリフルオロ)メタン | -51.5 | 510.9 | 104.5 | 11.2 |
65 | v0067_(ジクロロ)ジフルオロメタン | -81.0 | 233.0 | 121.0 | 16.1 |

正規表現

rownames(ts)[1]
[1] "ブロモトリフルオロメタン"

rownames(data)[1]
[1] "v0001_ブロモトリフルオロメタン"

grepl("v[0-9]*_ブロモトリフルオロメタン", 行名(データ)[1])
[1] TRUE

grepl("v*[0-9]_ブロモトリフルオロメタン", 行名(データ)[1])
[1] TRUE

4

2 に答える 2

2

一般に、名前と行名にそのような文字を含む行名を使用できます。それらを使用するときは、それらを引用するだけです。ここでの問題は関数だと思いsubsetます。サブセットを指定するいくつかの異常な方法を許可するため、一部のことは簡単になりますが、他のものは難しくなります。行名が何を意味するのかを理解しようとしています(単にリテラル文字列として解釈するのではなく)。括弧はおそらくそのプロセスを混乱させます。

次のようなものを試してください:

data[ grepl( paste0("v*[0-9]_",ws_names, collapse="|" ), rownames(data)), ]

%in%名前のリストを作成できる場合は、これを使用して単純化することもできます。

も参照fortune(69)してください。==TRUE は冗長であり、0 を加算したり 1 を乗算したりするよりも少し役に立ちません。

于 2013-06-12T20:20:15.013 に答える