WedX - журнал о программировании и компьютерных науках

Переименовать столбец .id в ldply

Есть ли способ присвоить настраиваемое имя столбцу, который обычно называется .id в результате ldply?

> ldply(setNames(1:3, 1:3), function(i) data.frame(j=1/i))
  .id         j
1   1 1.0000000
2   2 0.5000000
3   3 0.3333333

Я знаю, что могу вызвать rename по результату, но я бы хотел сделать это за один вызов. Какие-либо предложения?

Обратите внимание, что adply страдает аналогичной проблемой:

> adply(as.array(setNames(1:3, 1:3)), 1, function(i) data.frame(j=1/i))
  X1         j
1  1 1.0000000
2  2 0.5000000
3  3 0.3333333

Еще один вопрос, связанный с > решает проблему переименования столбцов «данных», но ответ также не дает решения для столбца .id.

21.03.2013

  • Я так не думаю (но был бы рад ошибиться); может быть, вы можете написать свою собственную функцию-оболочку, которая сделает это? 21.03.2013

Ответы:


1

Кажется, вам удобно использовать setNames, поэтому вы можете переместить присвоение «j» и «newname» в удобную оболочку.

setNames( ldply(setNames(1:3, 1:3), function(i) data.frame(1/i)) , c("newname", "j") )
  newname         j
1       1 1.0000000
2       2 0.5000000
3       3 0.3333333
21.03.2013
  • Да, эта или другая обертка - единственный известный мне способ сделать это. Подразумевается, что OP пытается присвоить метанимя списку имен в исходном списке, что нарушает логику функции ldply. Еще проще (по крайней мере, для глаз) было бы просто изменить имя столбца .id впоследствии строкой типа names(data_Frame)[1] <- "newname" 21.03.2013

  • 2

    Я предложил реализация, давайте посмотрим, станет ли она официальной plyr. По сути, это новый параметр .idname, который позволяет указать имя столбца .id, с возможностью полностью удалить его, передав NULL:

    > ldply(setNames(1:3, 1:3), function(i) data.frame(j=1/i), .idname='i')
      i         j
    1 1 1.0000000
    2 2 0.5000000
    3 3 0.3333333
    

    . Установите измененную версию, используя

    library(devtools)
    install_github('plyr', 'krlmlr', ref='140-142-id')
    

    РЕДАКТИРОВАТЬ: теперь это доступно в plyr 1.8.1 в CRAN:

    > ldply(setNames(nm=1:3), function(i) data.frame(j=1/i), .id='i')
    
    21.03.2013
  • Я только что обнаружил, что с ldply значения .id извлекаются из names ввода list. Итак, если список представляет собой список данных для разных уровней, на которых вы позже захотите агрегировать (например), убедитесь, что у списка есть имена, такие как names(mylist) <- seq_along(mylist). Столбец, названный аргументом.id, не будет отображаться, если имена входного списка равны NULL. 04.04.2015
  • Этот комментарий недооценен. Хотел использовать функцию ldply для связывания файлов csv и сохранения имен файлов в виде нового столбца. Установка имен списка в качестве имен (mylist) ‹- paste (mylist), а затем запуск сценария ldply позволил это. Спасибо. 12.02.2021
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]