回答:
%like%
現在のアプローチで関数について言及していることに気づきました。それが%like%
「data.table」からの参照であるかどうかはわかりませんが、そうであれば、次のように使用できます。
オブジェクトがaである必要はないことに注意してくださいdata.table
(ただし、data.frame
sとdata.table
sのサブセット化アプローチは同じではないことも覚えておいてください)。
library(data.table)
mtcars[rownames(mtcars) %like% "Merc", ]
iris[iris$Species %like% "osa", ]
それがあなたの持っていたものであれば、おそらくデータをサブセット化するために行と列の位置を混同していたでしょう。
パッケージをロードしたくない場合は、を使用grep()
して、一致する文字列を検索できます。以下は、mtcars
データセットの例です。ここでは、行名に「Merc」が含まれるすべての行を照合しています。
mtcars[grep("Merc", rownames(mtcars)), ]
mpg cyl disp hp drat wt qsec vs am gear carb
# Merc 240D 24.4 4 146.7 62 3.69 3.19 20.0 1 0 4 2
# Merc 230 22.8 4 140.8 95 3.92 3.15 22.9 1 0 4 2
# Merc 280 19.2 6 167.6 123 3.92 3.44 18.3 1 0 4 4
# Merc 280C 17.8 6 167.6 123 3.92 3.44 18.9 1 0 4 4
# Merc 450SE 16.4 8 275.8 180 3.07 4.07 17.4 0 0 3 3
# Merc 450SL 17.3 8 275.8 180 3.07 3.73 17.6 0 0 3 3
# Merc 450SLC 15.2 8 275.8 180 3.07 3.78 18.0 0 0 3 3
また、別の例iris
として、文字列を検索するデータセットを使用しますosa
。
irisSubset <- iris[grep("osa", iris$Species), ]
head(irisSubset)
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1 5.1 3.5 1.4 0.2 setosa
# 2 4.9 3.0 1.4 0.2 setosa
# 3 4.7 3.2 1.3 0.2 setosa
# 4 4.6 3.1 1.5 0.2 setosa
# 5 5.0 3.6 1.4 0.2 setosa
# 6 5.4 3.9 1.7 0.4 setosa
あなたの問題のために試してください:
selectedRows <- conservedData[grep("hsa-", conservedData$miRNA), ]
grep
、正規表現をサポートしているため、^hsa-
代わりにgrepを使用することもできます。
文字列内のパターンの有無を検出するストリンガーパッケージstr_detect()
から試してください。
以下は、dplyrパッケージからの%>%
パイプを組み込んだアプローチです。filter()
library(stringr)
library(dplyr)
CO2 %>%
filter(str_detect(Treatment, "non"))
Plant Type Treatment conc uptake
1 Qn1 Quebec nonchilled 95 16.0
2 Qn1 Quebec nonchilled 175 30.4
3 Qn1 Quebec nonchilled 250 34.8
4 Qn1 Quebec nonchilled 350 37.2
5 Qn1 Quebec nonchilled 500 35.3
...
これは、Rに付属するサンプルCO2データセットを、処理変数に部分文字列「non」が含まれている行に対してフィルタリングします。str_detect
修正された一致を見つけるか、正規表現を使用するかを調整できます。ストリンガーパッケージのドキュメントを参照してください。
myDataFrame[str_detect(myDataFrame$key, myKeyPattern),]
LIKE
sqliteで動作するはずです:
require(sqldf)
df <- data.frame(name = c('bob','robert','peter'),id=c(1,2,3))
sqldf("select * from df where name LIKE '%er%'")
name id
1 robert 2
2 peter 3
require()
ここにRパッケージが読み込まれているのですか
require
関数を使用してロードする必要があるためです。
dput(head(conservedData))
。