2011-06-23 34 views
6

Tôi đang sử dụng R. Giả sử tôi có vectơ thành phố và tôi muốn sử dụng các tên thành phố riêng lẻ trong một chuỗi.Chỉ định các giá trị khác nhau cho một phần tử trong một chuỗi

city = c("Dallas", "Houston", "El Paso", "Waco") 

phrase = c("Hey {city}, what's the meaning of life?") 

Vì vậy, tôi muốn kết thúc bằng bốn cụm từ riêng biệt.

"Hey Dallas, what's the meaning of life?" 
"Hey Houston, what's the meaning of life?" 
... 

Có chức năng tương tự định dạng() bằng Python cho phép thực hiện tác vụ này một cách đơn giản/hiệu quả không? Không.

Muốn tránh điều gì đó như dưới đây.

for(i in city){ 
    phrase = c("Hey ", i, "what's the meaning of life?") 
} 

Trả lời

14

Làm thế nào về sprintf?

> city = c("Dallas", "Houston", "El Paso", "Waco") 
> phrase = c("Hey %s, what's the meaning of life?") 
> sprintf(phrase, city) 
[1] "Hey Dallas, what's the meaning of life?" "Hey Houston, what's the meaning of life?" 
[3] "Hey El Paso, what's the meaning of life?" "Hey Waco, what's the meaning of life?" 
+0

+1 Không bao giờ biết về sprintf() Cảm ơn! – ATMathew

+0

Không có printf, nhưng bạn có thể cuộn của riêng bạn với 'printf <- function (format_string, ...) {cat (sprintf (format_string, ...))}' – Zach

7

Tùy thuộc vào cách phức tạp nó cần phải được, một dán đơn giản có thể thực hiện công việc:

paste("Hey ", city, ", what's the meaning of life", sep="") 

làm những gì bạn muốn.

@ Câu trả lời của Zach, sprintf có rất nhiều lợi thế, như định dạng đúng của đôi ...

Các vấn đề liên quan