У меня есть такой фрейм данных:
structure(list(ref = c("1_S126_L006", "1_S126_L006", "1_S126_L006",
"1_S126_L006", "1_S126_L006", "1_S126_L006", "1_S126_L006", "1_S126_L006",
"1_S126_L006", "1_S126_L006", "1_S126_L006", "1_S126_L006", "150_S96_L005",
"150_S96_L005", "150_S96_L005", "150_S96_L005", "150_S96_L005",
"150_S96_L005", "150_S96_L005", "150_S96_L005"), Escherichia_coli_CyaA_1 = c(NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, "N142S", "G222S", NA, NA,
NA, NA, NA, NA, NA, NA), Escherichia_coli_EF_Tu = c(".", ".",
".", NA, NA, NA, NA, NA, NA, NA, NA, NA, ".", NA, NA, NA, NA,
NA, NA, NA), Escherichia_coli_GlpT = c(NA, NA, NA, NA, NA, NA,
NA, "E448K", NA, NA, NA, NA, NA, NA, NA, NA, NA, "E448K", NA,
NA), Escherichia_coli_PtsI = c(NA, NA, NA, NA, NA, NA, NA, NA,
"R367K", NA, NA, NA, NA, NA, NA, NA, NA, NA, "R367K", NA), Escherichia_coli_UhpT = c(NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_),
fabG = c(NA, NA, NA, NA, NA, "D105E", NA, NA, NA, NA, NA,
NA, NA, NA, NA, "D105E", NA, NA, NA, NA), gyrA_8 = c(NA,
NA, NA, NA, NA, NA, NA, NA, NA, "S83L", NA, NA, NA, NA, NA,
NA, NA, NA, NA, "S83L"), gyrB_1 = c(NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_), marR = c(NA, NA, NA, "G103S",
"Y137H", NA, NA, NA, NA, NA, NA, NA, NA, "G103S", "Y137H",
NA, NA, NA, NA, NA), nfsA = c(NA, NA, NA, NA, NA, NA, "Y45C",
NA, NA, NA, NA, NA, NA, NA, NA, NA, "Y45C", NA, NA, NA),
ompF = c(NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_
), parC_3 = c(NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_)), .Names = c("ref", "Escherichia_coli_CyaA_1",
"Escherichia_coli_EF_Tu", "Escherichia_coli_GlpT", "Escherichia_coli_PtsI",
"Escherichia_coli_UhpT", "fabG", "gyrA_8", "gyrB_1", "marR",
"nfsA", "ompF", "parC_3"), row.names = c(NA, -20L), class = c("grouped_df",
"tbl_df", "tbl", "data.frame"), vars = "ref", drop = TRUE, indices = list(
0:11, 12:19), group_sizes = c(12L, 8L), biggest_group_size = 12L, labels = structure(list(
ref = c("1_S126_L006", "150_S96_L005")), row.names = c(NA,
-2L), class = "data.frame", vars = "ref", drop = TRUE, .Names = "ref"))
Что я хочу сделать, это свернуть весь фрейм данных, чтобы я получил только одну строку на запись в столбце "ref".Если в одном столбце присутствует несколько значений, они должны быть вставлены вместе и разделены символом «,» в одной и той же ячейке.Ранее я использовал следующее, чтобы свернуть весь фрейм данных в одну строку для каждой записи в столбце «ref»:
library(dplyr)
func_paste <- function(x) paste(unique(sum(x, na.rm = T)), collapse = ",")
df %>%
group_by(ref) %>%
summarise_all(funs(func_paste))
Это сработало на каком-то другом наборе данных, но я не могу на всю жизнь выяснитьпочему я до сих пор получаю сообщение об ошибке:
Error in summarise_impl(.data, dots) :
Evaluation error: invalid 'type' (character) of argument.
Я уже прочитал несколько сообщений об этой ошибке, например, здесь и здесь , и они предложили попробовать group_by(x) %>% summarise_each(funs(sum))
, но это работает только с числовыми данными, а не с символьными данными.Насколько я понял, это как-то связано с функцией sum (), так как это символьные данные.Любые предложения?
РЕДАКТИРОВАТЬ
Если я запускаю его без функции sum (), кажется, что все в порядке.Однако без части na.rm = T
теперь вставляются все NA со значениями.Как мне заставить это игнорировать это?