tôi có một danh sách như thế này:Chuyển đổi một danh sách để một hàng data.frame
arg0 <- list(code = "a", n = rep(10, 3))
Số lượng các đối tượng trong danh sách có thể thay đổi. Các đối tượng của danh sách là các vectơ - chỉ các đối tượng một chiều.
Tôi muốn thực hiện một thủ tục để chuyển đổi danh sách để một data.frame một dòng như thế này:
> data.frame(code = "a", n.1 = 10, n.2 = 10, n.3 = 10)
code n.1 n.2 n.3
1 a 10 10 10
tôi có hiện giải pháp này:
a <- stack(arg0)
b <- data.frame(t(a[,1]))
names(b) <- a[,2]
b <- data.frame(b)
đâu b
hầu như kết quả Tôi muốn đạt được:
> b
code n n.1 n.2
1 a 10 10 10
Hai câu hỏi:
- Có cách nào thanh lịch hơn để đạt được kết quả không?
- Bạn có biết cách đánh số các tên trùng lặp giống như
c(n.1, n.2, n.3)
không?
Được chấp nhận vì bảo quản các kiểu dữ liệu - tính năng bổ sung mà tôi không hỏi trong câu hỏi nhưng tôi đã suy nghĩ về nó. Điều ngạc nhiên đối với tôi là cách đặt tên của các đối tượng được tổ chức theo R. Các tên hàng khác nhau được gán cho cùng một kết quả trong hai ví dụ sau: 'foo <- function (x) t (data.frame (x)); foo (arg0 [[1]]) 'và' t (data.frame (arg0 [[1]])) '. Cũng không biết rằng 'lapply' duy trì tên đối tượng từ danh sách đối số. Cảm ơn bạn đã giáo dục câu trả lời! – djhurio