R语言中能否在文本字符串内直接调用函数参数?
在R字符串中直接引用函数变量的方法
当然可以不用paste拼接字符串!R里有几种简单的方式实现直接在字符串内引用函数参数的需求,下面给你逐一说明:
方法1:用glue包(最直观推荐)
这是新手最容易上手的方式,语法和你想要的写法几乎一致,只需要用{变量名}在字符串里标记要替换的参数:
# 先安装glue包(首次使用时执行) install.packages("glue") library(glue) welcome <- function(name, age, location) { glue("Welcome! Your name is {name}, you are {age} years old and live in {location}") } # 调用时注意字符串参数要加引号 welcome("Emma", "26", "UK")
执行后会输出:Welcome! Your name is Emma, you are 26 years old and live in UK
方法2:Base R自带的strInterp函数
如果不想额外装包,用base R的strInterp也能实现,用${变量名}标记参数:
welcome <- function(name, age, location) { strInterp("Welcome! Your name is ${name}, you are ${age} years old and live in ${location}") } welcome("Emma", "26", "UK")
效果和glue一样,不需要额外依赖。
方法3:Base R的sprintf函数
这是更传统的格式化写法,用占位符对应参数,适合习惯C语言风格的用户:
welcome <- function(name, age, location) { sprintf("Welcome! Your name is %s, you are %s years old and live in %s", name, age, location) } welcome("Emma", "26", "UK")
注意%s是字符串占位符,参数顺序要和占位符一一对应。
你原来写法的问题
- 字符串里的
**name:**只是普通文本,R不会把它解析成变量,只会原样输出; - 调用函数时
welcome(Emma,26,UK)里的Emma和UK没加引号,R会把它们当成未定义的变量,运行会报错,字符串类型的参数必须加引号。
内容的提问来源于stack exchange,提问作者anona
相关产品推荐
相关产品推荐

