在Excel(和Excel VBA)這是真正有用的連接使用 「&」 的文字和變量:R中的VBAs「&」等價於什麼?
a = 5
msgbox "The value is: " & a
會給
"The value is: 5"
如何在R中可以做到這一點?我知道有一種方法可以使用「paste」。不過,我想知道是否沒有任何技巧能像Excel VBA那樣簡單。
在此先感謝。
在Excel(和Excel VBA)這是真正有用的連接使用 「&」 的文字和變量:R中的VBAs「&」等價於什麼?
a = 5
msgbox "The value is: " & a
會給
"The value is: 5"
如何在R中可以做到這一點?我知道有一種方法可以使用「paste」。不過,我想知道是否沒有任何技巧能像Excel VBA那樣簡單。
在此先感謝。
This blog post暗示來定義自己的連接符,這是類似於VBA(和JavaScript)的,但它保留的paste
功率:
"%+%" <- function(...) paste0(..., sep = "")
"Concatenate hits " %+% "and this."
# [1] "Concatenate hits and this."
我不是這個解決方案的大風扇,雖然因爲它隱藏了什麼paste
在引擎蓋下。例如,你覺得這會發生嗎?
"Concatenate this string " %+% "with this vector: " %+% 1:3
# [1] "Concatenate this string with this vector: 1"
# [2] "Concatenate this string with this vector: 2"
# [3] "Concatenate this string with this vector: 3"
在Javascript中的情況下,這將給你Concatenate this string with this vector: 1,2,3
,這是完全不同的。我不能說Excel,但你應該考慮這個解決方案對你來說不是更困難,而不是更有用。
如果你需要使用Javascript樣的解決方案,你也可以試試這個:
"%+%" <- function(...) {
dots = list(...)
dots = rapply(dots, paste, collapse = ",")
paste(dots, collapse = "")
}
"Concatenate this string " %+% "with this string."
# [1] "Concatenate this string with this string."
"Concatenate this string " %+% "with this vector: " %+% 1:3
# [1] "Concatenate this string with this vector: 1,2,3"
但我還沒有廣泛的測試,所以要了望意想不到的效果。
另一種可能性是使用sprintf
:
a <- 5
cat(sprintf("The value is %d\n",a))
## The value is 5
的%d
表示整數格式化(%f
會給 「的值是5.000000」)。 \n
表示字符串末尾的換行符。
sprintf()
可以比paste
或paste0
更方便,當你想要放置很多件時,
sprintf("The value of a is %f (95% CI: {%f,%f})",
a_est,a_lwr,a_upr)
'paste'是非常簡單的,以及'sprintf的( 「值是:%d」,一)' –
遺憾,沒有看到張貼的答案之前,您的評論... –