首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python f-string等价于R?

Python f-string等价于R?
EN

Stack Overflow用户
提问于 2021-01-21 20:18:12
回答 3查看 1.4K关注 0票数 8

R有没有Python f-string的等价物?就像Python中的这个例子:

代码语言:javascript
复制
name = "Eric"
age = 42
f"Hello, {name}. You are {age}."

我知道pastepaste0,但它们要求您用逗号分隔不同的元素。我在网上搜索的时候找不到任何关于它的东西。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-01-21 20:27:01

您可以使用glue

代码语言:javascript
复制
library(glue)
name <- "Eric"
age <- 42
glue('Hello, {name}. You are {age}.')
#> Hello, Eric. You are 42.
票数 7
EN

Stack Overflow用户

发布于 2021-09-13 04:29:53

sprintf是R的标准库中最直接的选项,因此您不需要安装任何其他包或库,因为它只是底层C函数的包装器。但是,我承认如果你不习惯它的话,它的语法会有点棘手。

代码语言:javascript
复制
name <- "Eric"
age <- 42
sprintf("Hello, %s. You are %s.", name, age)

结果:[1] "Hello, Eric. You are 42."

如果你真的不喜欢那里的语法,你可以尝试paste0来得到同样的结果。

代码语言:javascript
复制
name <- "Eric"
age <- 42
paste0("Hello, ", name, ". You are ", age, ".")
票数 4
EN

Stack Overflow用户

发布于 2021-01-21 20:35:49

gsubfn包允许您在任何函数前面加上fn$,在这种情况下,字符参数将支持使用反引号或$符号的perl样式的字符串插值(公式表示法可以用于函数参数)。

代码语言:javascript
复制
library(gsubfn)
name <- "Eric"
age <- 42
fn$plot(0, main = "Hello, `name`. You are `age`.")

反引号内的部分可以是R表达式:

代码语言:javascript
复制
fn$identity("Hello, `name`. You are `age+1`.")
## [1] "Hello, Eric. You are 43."

如果可以从字符串中推断出变量名的结尾,它还支持$ notation。上面的情况并非如此,因为点在变量名中是有效的,但这是可行的:

代码语言:javascript
复制
fn$c("Hello $name")
## [1] "Hello Eric"

还可以使用同一个包中的gsubfn。这将查找用大括号括起来的字符串,然后用其中的变量名替换其内容。

代码语言:javascript
复制
gsubfn("{(.*?)}", get, "Hello, {name}. You are {age}.")
## [1] "Hello, Eric. You are 42."

或者可以提供一个列表作为第二个参数

代码语言:javascript
复制
L <- list(name = "Eric", age = 42)
gsubfn("{(.*?)}", L, "Hello, {name}. You are {age}.")
## [1] "Hello, Eric. You are 42."

这也可以使用相同的列表。它避免使用{...},并且只要名称和年龄不出现在字符串中的其他位置,它就可以工作。它在列表中查找单词,即由单词字符组成的子串。

代码语言:javascript
复制
gsubfn("\\w+", L, "Hello, name. You are age.")
## [1] "Hello, Eric. You are 42."
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65827265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档