значение ошибки ddply: атрибут ‘names’ должен быть такой же длины, как и вектор

Я просматриваю Machine Learning для хакеров, и я застрял в этой строке:

from.weight <- ddply(priority.train, .(From.EMail), summarise, Freq = length(Subject)) 

Что генерирует следующую ошибку:

 Error in attributes(out) <- attributes(col) : 'names' attribute [9] must be the same length as the vector [1] 

Это traceback ():

 > traceback() 11: FUN(1:5[[1L]], ...) 10: lapply(seq_len(n), extract_col_rows, df = x, i = i) 9: extract_rows(x$data, x$index[[i]]) 8: `[[.indexed_df`(pieces, i) 7: pieces[[i]] 6: function (i) { piece <- pieces[[i]] if (.inform) { res <- try(.fun(piece, ...)) if (inherits(res, "try-error")) { piece <- paste(capture.output(print(piece)), collapse = "\n") stop("with piece ", i, ": \n", piece, call. = FALSE) } } else { res <- .fun(piece, ...) } progress$step() res }(1L) 5: .Call("loop_apply", as.integer(n), f, env) 4: loop_apply(n, do.ply) 3: llply(.data = .data, .fun = .fun, ..., .progress = .progress, .inform = .inform, .parallel = .parallel, .paropts = .paropts) 2: ldply(.data = pieces, .fun = .fun, ..., .progress = .progress, .inform = .inform, .parallel = .parallel, .paropts = .paropts) 1: ddply(priority.train, .(From.EMail), summarise, Freq = length(Subject)) 

Объект priority.train является фреймом данных, и здесь больше информации:

 > mode(priority.train) [1] "list" > names(priority.train) [1] "Date" "From.EMail" "Subject" "Message" "Path" > sapply(priority.train, mode) Date From.EMail Subject Message Path "list" "character" "character" "character" "character" > sapply(priority.train, class) $Date [1] "POSIXlt" "POSIXt" $From.EMail [1] "character" $Subject [1] "character" $Message [1] "character" $Path [1] "character" > length(priority.train) [1] 5 > nrow(priority.train) [1] 1250 > ncol(priority.train) [1] 5 > str(priority.train) 'data.frame': 1250 obs. of 5 variables: $ Date : POSIXlt, format: "2002-01-31 22:44:14" "2002-02-01 00:53:41" "2002-02-01 02:01:44" "2002-02-01 10:29:23" ... $ From.EMail: chr "[email protected]" "[email protected]" "[email protected]" "[email protected]" ... $ Subject : chr "please help a newbie compile mplayer :-)" "re: please help a newbie compile mplayer :-)" "re: please help a newbie compile mplayer :-)" "re: please help a newbie compile mplayer :-)" ... $ Message : chr " \n Hello,\n \n I just installed redhat 7.2 and I think I have everything \nworking properly. Anyway I want to in"| __truncated__ "Make sure you rebuild as root and you're in the directory that you\ndownloaded the file. Also it might complain of a few depen"| __truncated__ "Lance wrote:\n\n>Make sure you rebuild as root and you're in the directory that you\n>downloaded the file. Also it might compl"| __truncated__ "Once upon a time, rob wrote :\n\n> I dl'd gcc3 and libgcc3, but I still get the same error message when I \n> try rpm --rebuil"| __truncated__ ... $ Path : chr "../03-Classification/data/easy_ham/01061.6610124afa2a5844d41951439d1c1068" "../03-Classification/data/easy_ham/01062.ef7955b391f9b161f3f2106c8cda5edb" "../03-Classification/data/easy_ham/01063.ad3449bd2890a29828ac3978ca8c02ab" "../03-Classification/data/easy_ham/01064.9f4fc60b4e27bba3561e322c82d5f7ff" ... Warning messages: 1: In encodeString(object, quote = "\"", na.encode = FALSE) : it is not known that wchar_t is Unicode on this platform 2: In encodeString(object, quote = "\"", na.encode = FALSE) : it is not known that wchar_t is Unicode on this platform 

Я бы опубликовал образец, но контент немного длинный, и я не думаю, что контент здесь имеет значение.

То же самое происходит и здесь:

 > ddply(priority.train, .(Subject)) Error in attributes(out) <- attributes(col) : 'names' attribute [9] must be the same length as the vector [1] 

Кто-нибудь знает, что здесь происходит? Кажется, что ошибка генерируется другим объектом, чем priority.train, потому что атрибут имен, по-видимому, имеет 9 элементов.

Буду признателен за любую помощь. Благодаря!

Задача решена

Я нашел проблему благодаря подсказке @ user1317221_G использования функции dput. Проблема заключается в поле Date, которое в этот момент содержит список, содержащий 9 полей (сек, мин, час, день, день, день, день, день, идст). Чтобы решить проблему, я просто преобразовал даты в символьные векторы, использовал ddply, а затем преобразовал даты в Date:

 > tmp  priority.train$Date  from.weight  priority.train$Date  rm(tmp) 

Я исправил эту проблему, которую я получал, преобразовывая формат с POSIXlt в POSIXct, поскольку Хэдли предлагает выше – одну строку кода:

  mydata$datetime<-strptime(mydata$datetime, "%Y-%m-%d %H:%M:%S") # original conversion from datetime string : > class(mydata$datetime) [1] "POSIXlt" "POSIXt" mydata$datetime<-as.POSIXct(mydata$datetime) # convert to POSIXct to use in data frames / ddply 

Вы, наверное, уже видели это, и это не помогло. Наверное, у нас, вероятно, еще нет ответа, потому что люди не могут воспроизвести вашу ошибку.

Для этого может dput или меньшая head(dput()) . Но вот альтернатива, использующая base :

 x <- data.frame(A=c("a","b","c","a"),B=c("e","d","d","d")) ddply(x,.(A),summarise, Freq = length(B)) A Freq 1 a 2 2 b 1 3 c 1 tapply(x$B,x$A,length) abc 2 1 1 

tapply ли этот tapply для вас?

 x2 <- data.frame(A=c("[email protected]", "re[email protected]"), B=c("please help a newbie compile mplayer :-)", "re: please help a newbie compile mplayer :-)")) tapply(x2$B,x2$A,length) [email protected] [email protected] 1 1 ddply(x2,.(A),summarise, Freq = length(B)) A Freq 1 [email protected] 1 2 [email protected] 1 

вы также можете попробовать более просто:

 table(x2$A) [email protected] [email protected] 1 1 

У меня была очень похожая проблема, хотя я не уверен, что она такая же. Я получил ошибку ниже.

 Error in attributes(out) <- attributes(col) : 'names' attribute [20388] must be the same length as the vector [128] 

У меня нет переменной в режиме списка, поэтому решение Моты не работает в моей ситуации. То, как я отсортировал проблему, - удалить plyr 1.8 и вручную установить plyr 1.7. Ошибка исчезла. Я также попытался переустановить plyr 1.8 и воспроизвести проблему.

НТН.

Я столкнулся с аналогичной проблемой с ddply, а также дал код / ​​ошибку ниже:

  test <- ddply(test, "catColumn", function(df) df[1:min(nrow(df), 3),]) Error: 'names' attribute [11] must be the same length as the vector [2] 

В тесте dataframe было всего несколько категориальных переменных.

Преобразование категориальных переменных в переменные символов следующим образом заставило команду ddply работать:

  test <- data.frame(lapply(test, as.character), stringsAsFactors=FALSE) 

Как только вы поймете, что столбец одной даты вмешивается, вы также можете просто оставить этот столбец, когда вы запускаете команду, а не конвертируете ее …

так

 from.weight <- ddply(priority.train, .(From.EMail), summarise, Freq = length(Subject)) 

может стать

 from.weight <- ddply(priority.train[,c(1:7,9:10)], .(From.EMail), summarise, Freq = length(Subject)) 

если, например, дата POSIXlt находится в столбце 8 фрейма данных. Что странно в сообщаемой ошибке, так это то, что она может не иметь ничего общего ни с тем, что вы пытаетесь объединить в группу, так и с тем, что вы ищете в качестве выходной информации ...

У меня была такая же проблема при использовании ddply и исправлена ​​с doBy

 library(doBy) bylength = function(x){length(x)} newdt = bylength(X ~From.EMail + To.EMail, data = dt, FUN = bylength) 

Я также сталкиваюсь с той же проблемой, я разрешаю ее, сохраняя только необходимые данные для ddply и конвертируя переменную фильтра и все необходимые текстовые переменные в символ, используя as.character

это сработало

  • Объединение Data.frame и выбор значений, которые являются общими в 2 Data.frames
  • Методы поиска близлежащих дубликатов записей
  • Создание фильма из серии сюжетов в R
  • R Заseleniumные сетки долготы - широта сетки на карте
  • Последовательность всех целых чисел между двумя векторами в R
  • Установка кривой плотности на гистограмму в R
  • Запустить скрипт VBA из R
  • Карта мира с ggmap
  • Объединение таблицы данных в соответствии с диапазонами дат
  • Множество групп ggplot
  • Как кратко написать формулу со многими переменными из фрейма данных?
  • Interesting Posts

    Не получать токен обновления OAuth Google

    Каков наилучший способ анализа XML dateTime в Java?

    Подробная информация о USB-не повезло до сих пор

    Как заставить sudo сохранять переменные среды?

    Насколько легко восстановить несжатые данные, если один сектор поврежден в архиве 7zip?

    Что происходит на проводе при настройке соединения TLS / LDAP или TLS / HTTP?

    Отправка факса без номера факса

    Несколько / одиночный экземпляр Linq to SQL DataContext

    После обновления до Windows 8 жесткий диск спорадически не работает; что не так?

    Как сделать HTTP-запрос с помощью файлов cookie на Android?

    Вычисление суммарной суммы для каждой строки

    Spring Boot – невозможно определить встроенный class драйвера базы данных для типа базы данных NONE

    Любой способ совместного использования состояния сеанса между различными приложениями в tomcat?

    Java: notify () vs. notifyAll () снова и снова

    Конструктор UserControl с параметрами в C #

    Давайте будем гением компьютера.