gpt4 book ai didi

r - 我如何将参数传递给子集()?

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

我正在构建一个 gui,它让我可以通过单击各种因素名称来选择 data.frame 的子集。
收到用户输入后,如何将其传递给子集函数?

例如:我有一个数据框 df,在 timeofday 列中有 MORNING 和 EVENING 因子,在 optype 列中有 RECEIVE 和 SEND 因子。从 GUI 我知道用户想要一个只包含 RECEIVE 操作的子集,所以我也有以下字符串:

RequestedFactor1 等于“optype”
RequestedRelationship1 等于“==”
RequestedValue1 等于“RECEIVE”

我可以对这些字符串做些什么来将它们传递给子集,以便我将收到与调用 时相同的输出子集(df,optype==“接收”) ?

TIA

最佳答案

为此,您可以使用 eval-parse 构造,但我再次警告说,这实际上是一件棘手的事情。请仔细阅读关于这两个的帮助文件。所以在你的情况下,这变成了:

subset(df,eval(parse(text=paste(RF1,RR1,RV1)))) 

一个例子来说明一些棘手的部分:
> RF1 <- "optype"

> RR1 <- "=="

> RV1 <- "\"RECEIVE\""

> optype <- c("RECEIVE","Not")

> ifelse(eval(parse(text=paste(RF1,RR1,RV1))),1,0)
[1] 1 0

注意转义的引号 (\")。这是必要的,因为您要针对字符串而不是 RECEIVE 对象进行测试。或者,您可以执行以下操作:
> RF1 <- "optype"

> RR1 <- "=="

> RV1 <- "Text"

> optype <- c("RECEIVE","Not")

> Text <- "RECEIVE"

> ifelse(eval(parse(text=paste(RF1,RR1,RV1))),1,0)
[1] 1 0

关于r - 我如何将参数传递给子集()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3586866/

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