A.sub <- A %>% dplyr::filter(kegg_compound != dup_u.df[1,]) %>%
dplyr::filter(kegg_compound != dup_u.df[2,]) %>%
dplyr::filter(kegg_compound != dup_u.df[3,]) %>%
dplyr::filter(kegg_compound != dup_u.df[4,]) %>%
dplyr::filter(kegg_compound != dup_u.df[5,])

Aはデーターフレームで、重複した遺伝子名が格納されたkegg_compound列があります。この列から、重複した遺伝子名を取りだすコードを書きたいのですが、うまくかけません。
dup_u.dfは、Aのkegg_compound列で重複した遺伝子名を格納したデーターフレームです。
A1 <- A[duplicated(A$kegg_compound), ] #A1には重複した最初の行が残る。
dup <- A1
dup_u <- unique(dup$kegg_compound)
dup_u.df <- data.frame(dup_u)
この例では、重複した遺伝子は、5個しかなかったため、一つずつ書き出したプログラムでも目的は達成されます。
もっと、重複した遺伝子が増えた場合、そもそも重複した遺伝子の数がわからない場合にも、対応できるプログラムにしたいと思っています。
Aは、文字型、ファクター型、int型が混在するデーターフレームです。
for文で以下のように書くと、ファクター型が強制的にint型に変換されてしまいます。
for(i in 1:nrow(dup_u.df)) {
# B[i,] <- A[A$kegg_compound == dup_u.df[i,1], ] }

ご教授、よろしくお願いいたします。