¿Cómo omitir los valores de NA al pegar juntos numerosos valores de columna?

Tengo un dataframe dd2 con cientos de columnas y lo que tengo que hacer es pegar todos estos valores de columna juntos, omitiendo cualquier valor de NA . Si hago algo como esto

 apply(a, 1, paste, collapse=",") 

en realidad incluye NA s como cadena "NA" . Quiero evitar eso. También podría hacer lo que se muestra a continuación, pero esto esperaría que trabaje para cada columna individual a la vez para obtener el resultado.

 result <- cbind( dd2, combination = paste(dd2[,2], replace(dd2[,3], is.na(dd2[,3]), ""), sep = ",") ) 

¿Hay alguna forma eficiente de hacerlo? Aquí está la muestra de datos:

 dd2 <- structure(c("A", "B", "C", "D", "E", "AK2", "HFM1", NA, "TRR", "RTT", NA, "PPT", "TRR", "RTT", NA, "PPT", NA, NA, "GGT", NA), .Dim = c(5L, 4L), .Dimnames = list(NULL, c("sample_id", "plant", "animal", "more"))) 

Puede intentar na.omit() para omitir los valores, luego pegar. Además, podría usar toString() , ya que es equivalente a paste(..., collapse = ", ") .

 apply(dd2, 1, function(x) toString(na.omit(x))) # [1] "A, AK2, PPT" "B, HFM1, PPT" "C, TRR" # [4] "D, TRR, RTT, GGT" "E, RTT" 

Si tiene columnas específicas que está utilizando, entonces

 apply(dd2[, cols], 1, function(x) toString(na.omit(x)))