我需要使用R中的cat函数获取某些输出语句。我编写了以下代码
it <-1
w <- c(1,2,3)
cat("\nUsing the eq(s)",w,"the iter is:",it,"\n",sep=",")
这给了我以下内容
Using the eq(s),1,2,3,the iter is:,1,
如果需要您的帮助,我需要获得此输出
Using the eq(s) 1, 2 and 3, the iter is: 1
谢谢
答案 0 :(得分:2)
更具通用性(对于length(w) != 3
而言):
enlist <- function(x) {
n <- length(x)
if (n <= 1) return(x)
paste(toString(x[-n]), "and", x[n])
}
cat("Using the eq(s) ", enlist(w), ", the iter is: ", it, "\n", sep = "")
Using the eq(s) 1, 2 and 3, the iter is: 1
答案 1 :(得分:1)
1)普通猫尝试一下:
cat("\nUsing the eq(s) ", toString(head(w, -1))," and ", tail(w, 1),
", the iter is: ", it, "\n", sep = "")
给予:
Using the eq(s) 1, 2 and 3, the iter is: 1
1a)。此变体使用toString
,然后用and
替换最后一个逗号。它的优点是即使w
的长度为1也可以使用。
cat("\nUsing the eq(s) ", sub("(.*),(.*)", "\\1 and \\2", toString(w)),
", the iter is: ", it, "\n", sep = "")
其余解决方案也可以使用此想法,但我们仅将它们显示为(1)的变体。
2)sprintf :另一种方法是像这样使用sprintf
:
s <- sprintf("\nUsing the eq(s) %s and %d, the iter is: %d\n",
toString(head(w, -1)), tail(w, 1), it)
cat(s)
3)fn $ 另一种方法是gsubfn中的fn$
。如果像f
那样在函数fn$f
前面加上一个前缀,则将对参数进行字符串插值。
library(gsubfn)
fn$cat(
"\nUsing the eq(s) `toString(head(w, -1))` and `tail(w, 1)`, the iter: is $it\n"
)