Ошибка говорит вам, что вы пытаетесь присвоить colnames
объекту с менее чем двумя измерениями.Действительно, если мы проверим структуру table()
, то увидим, что это одномерный объект, то есть
str(table(df$V1))
'table' int [1:5**(1d)**] 1 2 2 2 2 #(1d = 1 dimension)
- attr(*, "dimnames")=List of 1
..$ : chr [1:5] "1056" "2234" "4315" "6542" ...
Что вы хотите сделать - это сначала преобразовать в фрейм данных, а затем присвоить именат. е.
dd <- setNames(as.data.frame(table(df$V1)), c('StudID', 'Freq'))
# StudID Freq
#1 1056 1
#2 2234 2
#3 4315 2
#4 6542 3
#5 9886 2
Чтобы извлечь максимум, вы можете просто набрать
dd$StudID[which.max(dd$Freq)]
#[1] 6542
#Levels: 1056 2234 4315 6542 9886
ДАННЫЕ:
dput(df)
structure(list(V1 = c(2234L, 1056L, 9886L, 4315L, 2234L, 6542L,
9886L, 4315L, 6542L, 6542L), V2 = c(96L, 20L, 70L, 15L, 40L,
97L, 56L, 32L, 54L, 13L)), class = "data.frame", row.names = c(NA,
-10L))
РЕДАКТИРОВАТЬ: Чтобы он не возвращал уровни в соответствии с вашим комментарием, мы можем просто преобразовать в символ, то есть
dd$StudID <- as.character(dd$StudID)
dd$StudID[which.max(dd$Freq)]
#[1] 6542