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 $ Другой подход - fn$
в gsubfn. Если кто-то предвосхищает любую функцию f
с ней, как в fn$f
, то в аргументах будет выполняться строковая интерполяция.
library(gsubfn)
fn$cat(
"\nUsing the eq(s) `toString(head(w, -1))` and `tail(w, 1)`, the iter: is $it\n"
)