1

我希望glue::glue()在向量上使用 R 进行字符串插值,而不是多次调用它。

例子:

df <- data.frame(x = 1:10)

glue::glue("No. of Rows: {dim(df)[1]}, No. of Columns: {dim(df)[2]}")

会根据需要给予:

行数:10,列数:1

但我调用dim(df)了两次,它是一个长度为 2 的向量。

我想知道是否glue可以使用 % 运算符处理类似于 Python 中的字符串插值:

import pandas as pd

df = pd.DataFrame({"x": range(10)})
print('No. of Rows: %d, No. of Columns: %d' % df.shape)

无需调用df.shape两次即可提供相同的所需输出。

4

3 回答 3

3

是的,你可以这样做:

glue("nr = {x[1]}, nc = {x[2]}", x = dim(mtcars))
# nr = 32, nc = 11

?glue文档中,描述...是:

未命名的参数被视为要格式化的表达式字符串。在格式化之前将多个输入连接在一起。命名参数被视为可用于替换的临时变量。

(强调我的,突出与这个问题相关的部分。)

于 2021-03-25T15:04:03.453 回答
2

您可以使用它,类似于 Python 的 f 字符串插值:

shape <- dim(df)
glue::glue("No. of Rows: {shape[1]}, No. of Columns: {shape[2]}")
于 2021-03-25T15:03:13.357 回答
0

我不确定您是否可以本机执行此操作,但您可以做的一件事是将其包装在一个函数中:

f <- function(x) glue::glue("No. of Rows: {x[1]}, No. of Columns: {x[2]}")

f(dim(df))
于 2021-03-25T14:57:34.467 回答