如果我们使用与OP帖子中类似的方法,请将前导/滞后空格替换为""
以及那些有多个重复的,
与单个,
using gsub
data$Combine <- gsub(",{2,}", ",",
gsub("^,+|,+$", "", do.call(paste, c(data[-1], sep=","))))
data$Combine
#[1] "Egg,Chicken" "Flour,Milk" "Bread"
或者另一种选择是使用paste
,删除前导/滞后空格(trimws
),然后替换一个或多个空格(\\s+
)与一个,
using gsub
gsub("\\s+", ",", trimws(do.call(paste, data[-1])))
#[1] "Egg,Chicken" "Flour,Milk" "Bread"
data
data <- structure(list(ID = 1:3, Item1 = c("Egg", "", ""), Item2 = c("Chicken",
"Flour", ""), Item3 = c("", "", "Bread"), Item4 = c("", "Milk",
"")), .Names = c("ID", "Item1", "Item2", "Item3", "Item4"),
class = "data.frame", row.names = c(NA, -3L))