2011-09-10 43 views
10

Giả sử tôi có một hàm lấy đối số biến, chẳng hạn như sprintf(). Tôi muốn một cái gì đó như:Bạn có thể truyền một véc-tơ tới một biến thể không ?: Vector đến sprintf

sprintf("%s %s", "a", "b") 

nhưng tôi có "a" và "b" trong vector c ("a", "b"). Một cuộc gọi như

sprintf("%s %s", c("a", "b")) 

sẽ tạo ra lỗi cho không đủ đối số. Nhiều ngôn ngữ cung cấp một cách để "làm phẳng" một vectơ thành một đối số có độ dài thay đổi. Nhưng tôi dường như không thể tìm ra cú pháp để làm như vậy trong R. Có cách nào không?

Trả lời

17

Bạn có thể sử dụng do.call:

vec <- c("a","b") 
do.call(sprintf, c(list("%s %s"), vec)) 
# [1] "a b" 
Các vấn đề liên quan