2010-08-18 40 views
22

Tôi đang cố gắng in ra một dòng có chứa hỗn hợp của một chuỗi và một biến. Đây là mã R có mặt tại địa chỉ:Cách in biến R ở giữa chuỗi

cat("<set name=\",df$timeStamp,\" value=\",df$Price,\" ></set>\n") 

Đây là những gì nó in ra khi chạy:

<set name=",df$timeStamp," value=",df$Price," ></set> 

Tôi muốn nó phải có giá trị của df $ timestamp và df $ Giá in ra. Tôi muốn ví dụ như sau:

<set name="2010-08-18 12:00:59" value="17.56" ></set> 

Bất kỳ ý tưởng nào tôi gặp sai trong mã?

Bất kỳ và tất cả trợ giúp được đánh giá cao.

Trân trọng,

Anthony.

Trả lời

19

Vấn đề là R không đánh giá bất kỳ biểu hiện withing có dấu ngoặc kép - nó chỉ là in chuỗi bạn định nghĩa . Có nhiều cách xung quanh nó. Ví dụ, bạn có thể sử dụng sprintf chức năng (chưa được kiểm tra bởi vì bạn không cung cấp một ví dụ tái sản xuất):

cat(sprintf("<set name=\"%s\" value=\"%f\" ></set>\n", df$timeStamp, df$Price)) 
+0

Khi sử dụng dấu nháy đơn, điều này làm cho toàn bộ điều dễ đọc hơn ... ' cat (sprintf (' \ n ', df $ timeStamp , df $ Price)) ' – drmariod

13

Bạn đang thiếu một số dấu ngoặc kép bổ sung. Hãy thử điều này:

cat('<set name=\"',df$timeStamp,'\" value=\"',df$Price,'\" ></set>\n') 

Dưới đây là một ví dụ làm việc của những gì tôi có nghĩa là:

cat("a b c -> \"", letters[1:3], "\"\n") 
+13

Nếu bạn muốn siêu trơn, bạn có thể tránh phải thoát khỏi dấu ngoặc kép (trong trường hợp này) bằng cách sử dụng dấu nháy đơn để phân định chuỗi và dấu ngoặc kép trong đó: 'cat ('abc ->"', chữ cái [1: 3], '"\ n ') ' –

1

Cát hoạt động giống tốt mà không có thư viện thêm và thoát:

cat('<set name="', df$timeStamp, '" value="', df$Price, '"></set>\n', sep='') 

đầu ra:

<set name="2010-08-18 12:00:59" value="17.56"></set> 
+0

Điều này gần giống với câu trả lời của Shane. Việc bổ sung đối số 'sep' có thể là một nhận xét về câu trả lời của anh ta chứ không phải là một bài đăng mới. –

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