Когда мы конвертируем вывод table
в data.frame
, он создает два столбца data.frame
set.seed(24)
v1 <- table(sample(1:5, 100, replace = TRUE))
y <- data.frame(v1)
y
# Var1 Freq
#1 1 19
#2 2 24
#3 3 22
#4 4 16
#5 5 19
Первый столбец «Var1» - это names
частоты, выводимой из table
, а 'Freq' - это фактическая частота этих names
y[y$Freq == max(y$Freq), 1]
#[1] 2
#Levels: 1 2 3 4 5
Теперь мы поднастроим первый столбец 'Var1' на основе значения max
'Freq', и это возвращает vector
из-за drop = TRUE
в [
при наличии одного столбца
Если мы хотим вернуть data.frame
с одним, добавьте drop = FALSE
в конце
y[y$Freq == max(y$Freq), 1, drop = FALSE]
# Var1
#2 2
Что касается имени по умолчанию Freq
, оно создается из метода as.data.frame.table
as.data.frame.table
function (x, row.names = NULL, ..., responseName = "Freq", stringsAsFactors = TRUE,
sep = "", base = list(LETTERS))
{
ex <- quote(data.frame(do.call("expand.grid", c(dimnames(provideDimnames(x,
sep = sep, base = base)), KEEP.OUT.ATTRS = FALSE, stringsAsFactors = stringsAsFactors)),
Freq = c(x), row.names = row.names))
names(ex)[3L] <- responseName
eval(ex)
}