说我有以下字符串:
str1 <- "Isolated values : {x1}\nBasic operation: {x2+x3[2]}\nBase function: {cos(x4)}\nLoaded function: {str_sub(x5,1,5)}\nInexistent/unloaded/unaccessible function : {f1(x6)}\nUsing constants: {pi*x7}"
我们定义参数:
library(glue)
library(stringr)
x1 <- 1
x2 <- 2
x3 <- c(2,3)
x4 <- 4
x5 <- "hello world"
x6 <- 6
x7 <- 7
f1 <- function(x){"I shouldn't exist"}
我可以使用胶水并且工作正常:
glue(str1)
# Isolated values : 1
# Basic operation: 5
# Base function: -0.653643620863612
# Loaded function: hello
# Inexistent/unloaded/unaccessible function : I shouldn't exist
# Using constants: 21.9911485751286
现在我稍微修改了工作区
rm(f1,x6)
我想从这个字符串中提取参数并得到以下输出(顺序并不重要):
extract_glue_params(str1)
# [1] "x1" "x2" "x3" "x4" "x5" "f1" "x6" "x7"
我认为f1是一个参数,因为当cos
或str_sub
(来自stringr
)时,无法从当前环境访问它。
pi
是常数,所以我也想忽略它。
对于"a"
或glue("{data.frame(a=1)}")
,glue("{x1$a}")
之类的解决方案我是否正常...我会将其用于一般的简单案例。< / p>
glue
包在C
中进行解析,因此我无法窃取其代码。