1

次のようなデータ フレームがあり、列 2 と 3 が要素です。

radio <- data.frame(id = 1:6, snp1 = c("C/T", "C/T", "C/T", "Not aplif", "C/T", "Not amplf"), snp2 = c("A/G", "C/T", "A/G", "Not amplif", "C/T", "C/T"))

すべての「Not amplif」を「NOT AMPLIFIED」に置き換えたいのですが、この文字列にタイプミスがあることに注意してください。常に正しいのは「Not」だけです。だから私は次のことを試しました:

radio[ ,c(2,3)][grep("Not", radio[ ,c(2,3)], ignore.case = TRUE), ] <- "NOT AMPLIFIED"

しかし、要因を扱っているため、エラーが発生する可能性があります。次に、それを文字に変換しようとしました。

radio[ ,c(2,3)] = lapply(radio[ ,c(2,3)], as.character)

置換手順をもう一度試しましたが、ターゲット文字列だけでなく、行全体を「NOT AMPLIFIED」に置き換えました。

助けてください。

4

1 に答える 1

3

radio[ ,c(2,3)]文字ベクトルではなく、データ フレーム (2 列を選択) であるため、エラーが発生します。いくつかの方法で意図した結果を得ることができますが、これは機能します

data.frame(lapply(radio, gsub, pattern = "[nN]ot.*$", replacement = "NOT AMPLIFIED"))

データ フレームを列ごとに分割し (データ フレームは密かにリストでもあるため)、gsub「Not and what after」を「NOT AMPLIFIED」に置き換えてから、それをデータ フレームに変換します。

于 2013-05-05T02:18:27.590 に答える