多くの列を持つ大きなデータ フレームがあります。これらの列のサブセットについて、部分文字列で一致させて置き換えたい
2 つの列のサブセットの例は次のようになります。
df <- data.frame(list(A=c("0/0:52,0:52:High_Confidence:99:0","0/0:2,0:2:Low_Confidence:3:0,3,45,1858","0/0:52,0:52:High_Confidence:99:0,135,1858","0/0:9,0:9:Low_coverage_High_quality:21:0,21,291"), B=c("0/0:5,0:5:Low_Confidence:15:0,15,194","0/0:21,0:21:High_Confidence:51:0,51,675","0/0:1,0:1:Low_Confidence:3:0,3,39","0/0:17,0:17:High_Confidence:48:0,48,609")))
grepl タイプのコマンドを使用して、フィールド内の「Low_Confidence」を ./ に置き換えたいと思います。データフレーム全体。
私はもう試した:
df[grepl(".*Low_Confidence.*", df)] <- "./." # replaces ALL values with ./.
df[agrep(".*Low_Confidence.*", df)] <- "./." # Does nothing
df[grep(".*Low_Confidence.*", df)] <- "./."
df[grep("Low_Confidence", df)] <- "./."
これらのほとんどは、関連する列のすべての値が ./ である data.frames を返します。Low_Confidence 基準に一致するかどうかに関係なく。
また、data.frameをマトリックスに変換してみました
df <- as.matrix(df)
df[df==".*Low_Confidence.*"] <- "./." # does nothing
成功せずに。これを一度に 1 列ずつ行うと、可能であることがわかっています。たとえば、次のようになります。
df$V85[grepl(".*Low_Confidence.*", df$V85)] <- "./."
しかし、非常に反復的な数百の列の場合。
だから私はワイルドカードで検索/置換するソリューションを探しています.data.frame内の文字列全体(一致するテキストだけでなく)全体、または列のサブセット(どちらでも機能します)。
ありがとう!