gpt4 book ai didi

r - 将字符串转换为函数的非字符串输入

转载 作者:行者123 更新时间:2023-12-04 03:03:11 25 4
gpt4 key购买 nike

我如何存储一个字符串(例如,列范围 "cyl:drat, vs:gear" ),以便我可以在一个函数中使用它,它应该被解释为字符串?


例如,我想执行以下命令:

subset(mtcars, select=c(disp:drat, vs:gear))   

但是为select分配内容到变量 x :

x <- as.name("cyl:drat, vs:gear")
subset(mtcars, select=x)
#Error in x[j] : invalid subscript type 'symbol'

library(rlang)
x <- quo(!! sym("cyl:drat, vs:gear"))
subset(mtcars, select=x)
#Error in x[j] : invalid subscript type 'language'

x <- parse_expr("cyl:drat, vs:gear")
subset(mtcars, select=x)
#Error in x[j] : invalid subscript type 'language'

正在分配 x <-"cyl"有效,但是 x <-"cyl:drat"同样失败。


有关格式的提示 x应该已经是一个受欢迎的开始。

最佳答案

你错过了表达式中的 c(),你还需要在 subseteval你的表达式:

library(rlang)

x <- parse_expr("c(cyl:drat, vs:gear)")
subset(mtcars, select=eval(x))

parse_expr 等同于 base R 中的 parse:

x2 = parse(text="c(cyl:drat, vs:gear)")
subset(mtcars, select=eval(x2))

您还可以将 parse_exprparse_exprsselect from dplyr 一起使用,这是它的目的被使用:

library(dplyr)

select(mtcars, !! x)

或用于拼接表达式列表:

y = parse_exprs("cyl:drat; vs:gear")
select(mtcars, !!! y)

关于r - 将字符串转换为函数的非字符串输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47225650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com