Có cách nào để sử dụng ánh xạ trên hai vectơ để xây dựng danh sách được đặt tên không? Vectơ đầu tiên sẽ là loại character
và chứa các tên được sử dụng cho danh sách trong khi thứ hai chứa các giá trị.Tạo danh sách có tên từ hai vectơ (tên, giá trị)
Cho đến nay, giải pháp duy nhất tôi có là:
> dummyList = list()
> addToList <- function(name, value) {
+ dummyList[[name]] <- value
+ }
> mapply(addToList, c("foo", "bar"), as.list(c(1, 2))
$foo
`1`
$bar
`2`
Điều này có vẻ giống như một giải pháp khá giả tạo, nhưng tôi không thể tìm ra cách để làm điều đó bằng cách khác. Những vấn đề tôi có với nó là:
Nó đòi hỏi sự sáng tạo của
dummyList
mặc dùdummyList
không bao giờ thay đổi và là một danh sách rỗng sau khi cuộc gọi đếnmapply
.Nếu vectơ số,
c(1, 2)
, không được chuyển đổi thành danh sách, thì kết quả của cuộc gọi đếnmapply
là một vector có tên là tăng gấp đôi.
Để khắc phục vấn đề 2, tôi có thể luôn luôn chỉ cần gọi mapply
trên hai vectơ và sau đó gọi as.list
vào kết quả, nhưng có vẻ như không nên có một cách để trực tiếp tạo ra một danh sách với các giá trị là trong một vector.
Cảm ơn bạn. Tôi đã không nhận thức được chức năng 'setNames' và phù hợp với mục tiêu của tôi một cách hoàn hảo. Ngoài sự tò mò, có cách nào để làm điều đó bằng cách sử dụng 'lapply' mà bạn biết không? Có vẻ như có thể là 'lapply' có thể trả về danh sách. –
ý của bạn là "sử dụng' lapply' "là gì? Bạn có muốn thực hiện tác vụ tương tự bằng cách sử dụng 'lapply' không? (Nếu vậy, tại sao? Như một bài tập lập trình? Nhiều bối cảnh sẽ hữu ích.) Nếu bạn muốn làm điều gì đó khác, hãy chỉnh sửa câu hỏi của bạn hoặc hỏi một câu hỏi mới? –