0

したがって、grep関数を使用していくつかの行を選択したいのですが、うまく機能しません:

それは私が使用したコードです:

set.seed(2)
tbl_bio <- tbl_reo[grepl("Biotin", tbl_reo$modifications), , drop = FALSE] ## selecting rows from column "modifications" with string Biotin - that works good

tbl_bio1 <- tbl_bio[grep1("BiotinControl1_2", tbl_bio$variable), , drop = TRUE]
tbl_bio2 <- tbl_bio1[grepl("BiotinControl2", tbl_bio1$variable), , drop = TRUE]
tbl_bio3 <- tbl_bio2[grepl("BiotinControl3", tbl_bio2$variable), , drop = TRUE]

ドロップをTRUEに設定したため、問題は他の3行のコードにあります。そのため、言及した文字列を含む行を削除するだけだと思いました。そのようなコードを実行した後、データがありません。「BiotinControl1_2」などを含む行を削除(ドロップ)する方法。1つの関数で実行できますか、それとも私がしたように3つの異なるコードを書かなければなりませんか?

4

1 に答える 1

0

これは、いくつかの偽のデータを使用した例です。それが役に立てば幸い。

df <- structure(list(mod = c("b", "d", "b", "e", "b", "b", "b", "b", 
    "b", "b", "b", "f", "d", "f", "d", "f", "f", "c", "a", "b"), 
    var = c("K", "L", "H", "G", "J", "I", "G", "K", "H", "G", 
    "L", "G", "K", "K", "J", "L", "I", "H", "H", "H"), x = c(47L, 
    18L, 24L, 91L, 27L, 23L, 97L, 19L, 73L, 20L, 90L, 25L, 92L, 
    98L, 37L, 62L, 54L, 52L, 49L, 56L)), .Names = c("mod", "var", 
    "x"), row.names = c(NA, -20L), class = "data.frame")

# select all rows with variable mod equal to string "b"
df[df$mod=="b", ]
# select all rows with variable var NOT equal to string "I", "J", "L"
df[!(df$var %in% c("I", "J", "L")), ]
# select all rows with variable mod equal to string "b" AND variable var NOT equal to string "I", "J", "L"
df[df$mod=="b" & !(df$var %in% c("I", "J", "L")), ]
于 2013-10-29T12:45:15.000 に答える