2012-11-19 23 views
5

Tôi đang gặp một vấn đề với việc sử dụng dấu ngoặc kép khi định dạng các chuỗi văn bản được gửi đến các chức năng trong R.Gửi một chuỗi văn bản có chứa dấu ngoặc kép để hoạt

Hãy xem xét một ví dụ mã chức năng:

foo <- function(numarg = 5, textarg = "** Default text **"){ 
    print (textarg) 
    val <- numarg^2 + numarg 
    return(val) 
} 

khi chạy với đầu vào sau:

foo(4, "Learning R is fun!") 

đầu ra là:

[1] "Learning R is fun!" 
[1] 20 

Nhưng khi tôi cố gắng (theo những cách khác nhau, như đề xuất here) để viết "R" thay vì R, tôi nhận được các kết quả sau:

> foo(4, "Learning R is fun!") 
[1] "Learning R is fun!" 
[1] 20 
> foo(4, "Learning "R" is fun!") 
Error: unexpected symbol in "funfun(4, "Learning "R" 
> foo(4, "Learning \"R\" is fun!") 
[1] "Learning \"R\" is fun!" 
[1] 20 
> foo(4, 'Learning "R" is fun!') 
[1] "Learning \"R\" is fun!" 
[1] 20 

Sử dụng as.character(...) hoặc dQuote(...) như đề xuất here dường như phá vỡ do số lượng đối số khác nhau.

Trả lời

1

Bạn có thể thử những cách tiếp cận:

foo <- function(numarg = 5, textarg = "** Default text **"){ 
    cat(c(textarg, "\n")) 
    val <- (numarg^2) + numarg 
    return(val) 
} 

foo <- function(numarg = 5, textarg = "** Default text **"){ 
    print(noquote(textarg)) 
    val <- (numarg^2) + numarg 
    return(val) 
} 

foo(4, "Learning R is fun!") 
foo(4, 'Learning "R" is fun!') 
+0

Cảm ơn! Cả hai đều làm việc! Tôi đã nhận thấy rằng tôi có thể sử dụng 'cat (textarg," \ n ")' thay vì định dạng đầu ra thành mảng bằng cách sử dụng 'cat (c (textarg," \ n ")'. – Khaloymes

5

Hai cách tôi biết. Đầu tiên là chỉ cần sử dụng dấu ngoặc đơn để bắt đầu và kết thúc chuỗi ký tự:

> cat('Learning "R" is fun!') 
Learning "R" is fun! 

Thứ hai là để thoát khỏi dấu ngoặc kép:

> cat("Learning \"R\" is fun!") 
Learning "R" is fun! 

Lưu ý rằng việc này bởi vì tôi sử dụng cat, mà được thiết kế để chuỗi đầu ra cho bàn điều khiển. Có vẻ như bạn sử dụng print() trong đó cho thấy các đối tượng chứ không phải là đầu ra nó

+2

Khi tôi cố gắng sử dụng 'cat' khi gửi văn bản hoạt động, văn bản được định dạng đúng (sử dụng bất kỳ đề xuất của bạn), chỉ có thời gian này, nó kết quả đầu ra 'Học tập" R "là niềm vui! NULL' thay vì' Học tập "R" là thú vị! Bất kỳ ý tưởng làm thế nào để chấm dứt bổ sung 'NULL'? (Và quan trọng hơn nữa, bất kỳ ý tưởng nào mà nó đến từ đâu?) – Khaloymes

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