Chuyển một vectơ thành một danh sách, mỗi phần tử trong vectơ dưới dạng một phần tử trong danh sách


91

Vectơ như thế này:

c(1,2,3)
#[1] 1 2 3

Tôi cần một cái gì đó như thế này:

list(1,2,3)
#[[1]]
#[1] 1
#
#[[2]]
#[1] 2
#
#[[3]]
#[1] 3

Tôi đã thử điều này:

list(c(1,2,3))
#[[1]]
#[1] 1 2 3

Câu trả lời:


125

Đơn giản, chỉ cần làm điều này:

as.list(c(1,2,3))

FYI: Dường như bỏ qua giá trị NULL trong as.list(c(0, NULL,1)).
Oleg Melnikov

1
@OlegMelnikov bạn không thể chuyển NULLvào vector c(), bạn có thể chuyển NAnếu đó là thứ bạn đang tìm kiếm.
Matt W.

4

Một bổ sung cho câu trả lời được chấp nhận: nếu bạn muốn thêm vectơ vào các phần tử khác trong danh sách dài hơn, as.list () có thể không tạo ra những gì bạn mong đợi. Ví dụ: bạn muốn thêm 2 phần tử văn bản và một vectơ gồm năm phần tử số (1: 5), để tạo danh sách dài 7 phần tử.

L<-list("a","b",as.list(1:5)) 

Rất tiếc: nó trả về một danh sách có 3 phần tử và phần tử thứ ba có một danh sách con gồm 5 phần tử; không phải những gì chúng tôi muốn! Giải pháp là kết hợp hai danh sách riêng biệt:

L1<-list("a","b")
L2<-as.list(1:5)
L<-c(L1,L2) #7 elements, as expected
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.