24

たとえば、名前のサブセットに基づいて行を選択したい

次のデータがある場合:

data <- structure(c(91, 92, 108, 104, 87, 91, 91, 97, 81, 98), 
.Names = c("fee-", "fi", "fo-", "fum-", "foo-", "foo1234-", "123foo-", 
"fum-", "fum-", "fum-"))

「foo」に一致する行を選択するにはどうすればよいですか?

grep() を使用しても機能しません:

 grep('foo', data)

戻り値:

integer(0)

私は何を間違っていますか?または、より良い方法はありますか?

ありがとう!

4

3 に答える 3

27

values プロパティではなく、data の names プロパティを grep する必要があります。

あなたの例では、使用します

> grep("foo",names(data))
[1] 5 6 7
> data[grep("foo",names(data))]
  foo- foo1234-  123foo- 
  87       91       91 

これを行うもう 1 つのクリーンな方法は、データ フレームを使用することです。

> data <- data.frame(values=c(91, 92, 108, 104, 87, 91, 91, 97, 81, 98), 
                   names = c("fee-", "fi", "fo-", "fum-", "foo-", "foo1234-", "123foo-", 
                   "fum-", "fum-", "fum-"))

> data$values[grep("foo",data$names)]
[1] 87 91 91
于 2010-11-18T23:19:07.000 に答える
6

サブセットを正規表現と組み合わせて使用​​します。

subset(your_data, regexpr("foo", your_data$your_column_to_match) > 0))

1列のデータセットだけを気にするのであれば、列名を指定する必要はないと思います...

フィリップ

于 2010-11-18T23:24:14.670 に答える
2
> grep("foo",names(data), value=T)
[1] "foo-"     "foo1234-" "123foo-" 

値が true の場合、インデックスの代わりにコンテンツを返します

于 2015-09-26T15:00:47.487 に答える