gpt4 book ai didi

r - 如何从字符串创建带引号的表达式

转载 作者:行者123 更新时间:2023-12-04 00:52:54 24 4
gpt4 key购买 nike

给定一个字符串向量,我想创建一个不带引号的表达式。

# eg, I would like to go from 
c("string1", "string2")

# to... (notice the lack of '"' marks)
quote(list(string1, string2))

我在删除引号时遇到了一些困难
input <- c("string1", "string2")
output <- paste0("quote(list(", paste(input, collapse=","), "))")

# not quite what I am looking for.
as.expression(output)
expression("quote(list(string1,string2))")

如果相关,这用于 data.table 列选择。
我正在寻找的应该能够适合 data.table 如下:
library(data.table)
mydt <- data.table(id=1:3, string1=LETTERS[1:3], string2=letters[1:3])

result <- ????? # some.function.of(input)
> mydt[ , eval( result )]
string1 string2
1: A a
2: B b
3: C c

最佳答案

这是我要做的:

## Create an example of a data.table "dt" whose columns you want to index 
## using a character vector "xx"
library(data.table)
dt <- data.table(mtcars)
xx <- c("wt", "mpg")

## Construct a call object identical to that produced by quote(list("wt", "mpg"))
jj <- as.call(lapply(c("list", xx), as.symbol))

## Try it out
dt[1:5,eval(jj)]
# wt mpg
# 1: 2.620 21.0
# 2: 2.875 21.0
# 3: 2.320 22.8
# 4: 3.215 21.4
# 5: 3.440 18.7

"computing on the language"像这样,查看您尝试构建的对象的结构通常很有帮助。基于以下内容(一旦您了解 as.call()as.symbol() ),创建所需的语言对象就变得轻而易举了:
x <- quote(list(wt, mpg))

str(x)
# language list(wt, mpg)

class(x)
# [1] "call"

str(as.list(x))
# List of 3
# $ : symbol list
# $ : symbol wt
# $ : symbol mpg

关于r - 如何从字符串创建带引号的表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14697718/

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