Как я могу переименовать выходные строки/столбцы функций **ply из plyr?

Я хотел бы указать выходные имена строк/столбцов в функции **ply, ldply, из пакета plyr.

Например,

У меня есть список foo, который я хочу преобразовать в data.frame и обрезать значащие цифры с помощью signif()

 foo <- list(var.a = runif(3), var.b = runif(3), var.c=runif(3))

То, что у меня есть сейчас

q <- ldply(foo, signif, 2)
colnames(dq)[1] <- c('id', 'q1', 'q2','q3')
rownames(dq) <- dq$id

Есть ли более простой способ?

Два предыдущих вопроса касались того, как использовать plyr для переименования rows. и cols с использованием plyr, но я думаю мой вопрос в другом. Можно ли указывать имена одновременно с другой функцией (или правильно ли я это делаю)? Является ли это стоящим запросом функции?


person David LeBauer    schedule 02.12.2010    source источник


Ответы (1)


Вы должны где-то давать имена, либо в функции, вызываемой внутри, например, в

R> ldply(foo, function(l) c(a=signif(l[1], 2), b=signif(l[2], 2), 
+                           c=signif(l[3], 2)))
    .id    a    b    c
1 var.a 0.50 0.72 0.27
2 var.b 0.82 0.38 0.24
3 var.c 0.13 0.27 0.81
R> 

или вы сделали после звонка.

Другой вариант, который я часто использую, — это явное создание одной строки data.frame в анонимной рабочей функции. *dply() и другие затем просто объединили их в один data.frame. Это работает достаточно хорошо, на мой вкус.

person Dirk Eddelbuettel    schedule 02.12.2010
comment
Не могли бы вы опубликовать пример вашего варианта 2? Это звучит полезно, но я интуитивно не понимаю, как это будет работать. Спасибо. - person kmm; 02.12.2010
comment
См., например, мой старый ответ здесь: mean">stackoverflow.com/questions/3277326/ и вообще, попробуйте выполнить поиск в форме [r] someterm, чтобы найти "someterm" в тегах R на StackOverflow. Я только что сделал это для ddply, и первые два хита были успешными. - person Dirk Eddelbuettel; 02.12.2010
comment
Спасибо. Я не думал искать SO аналогичный ответ. - person kmm; 02.12.2010