Мы можем использовать rbind
с list
вместо vector
, так как list
может иметь различные типы
rbind(col_freq[1:10,], list("Others", sum(col_freq[1:nrow(col_freq),2])))
С c
, т.е. создавать vector
, если есть является единственным элементом, не относящимся к нумерации c, он изменит класс всего вектора на этот тип в зависимости от приоритета для разных типов. character
будет иметь больший приоритет, поэтому вывод sum
будет character
В коде OP пропущенное значение будет сгенерировано, если в первом столбце будет factor
. Таким образом, нам нужно преобразовать этот столбец в character
или добавить новый уровень «Другие» перед выполнением rbind
col_freq$Symptoms <- as.character(col_freq$Symptoms)
Или, если он должен остаться как factor
col_freq$Symptoms <- factor(col_freq$Symptoms, levels = c(levels(col_freq$Symptoms), "Others"))
Или назначьте новый level
levels(col_freq$Symptoms) <- c(levels(col_freq$Symptoms), "Others")
Теперь мы делаем rbind
rbind(col_freq[1:10,], list("Others", sum(col_freq[1:nrow(col_freq),2])))
# Symptoms values
#1 fat 40
#2 sleep 25
#3 irrit 21
#4 rem 19
#5 Neck 18
#6 conc 12
#7 nerv 11
#8 Pres 9
#9 slow 9
#10 Head 8
#11 Others 172
data
col_freq <- data.frame(Symptoms = c("fat", "sleep", "irrit", "rem","Neck", "conc",
"nerv", "Pres", "slow", "Head"), values = c(40, 25, 21, 19, 18, 12, 11, 9, 9, 8))