首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中的同一函数中同时使用文本和参数

在R中的同一函数中同时使用文本和参数
EN

Stack Overflow用户
提问于 2021-09-27 19:42:21
回答 2查看 38关注 0票数 1

首先需要创建相同的数据;

代码语言:javascript
复制
library(tibbletime)
date <- seq(from = as.Date("1979-09-01"), to = as.Date("2019-12-01"), by = "month")
n <- length(date)
df <- matrix(NA, n, 2)
df <- data.frame(df)
var <- sample(1000:5000, n)
df[1] <- date
df[2] <- var
names(df) <- c("date", "var")
df <- as_tbl_time(df, index = date)

如何使用下面的命令;

代码语言:javascript
复制
filter_time(df, ~"1979-09")

by paste0,eval(parse(text = "") )我试过了;

代码语言:javascript
复制
filter_time(eval(parse(text = paste0("df",",", "~" , "1979-09",sep = ""))))

但它并没有起作用。我有时间对象的问题,它必须是文本格式。如果该代码正常工作,则可以在for循环中使用,谢谢。

EN

回答 2

Stack Overflow用户

发布于 2021-09-27 19:58:16

您也可以使用as.formula()来实现这一点

代码语言:javascript
复制
filter_time(df, as.formula(paste0("~", '"', year, '"')))

Full reprex:

代码语言:javascript
复制
library(tibbletime)

date <- seq(from = as.Date("1979-09-01"), to = as.Date("2019-12-01"), by = "month")
n <- length(date)
df <- matrix(NA, n, 2)
df <- data.frame(df)
var <- sample(1000:5000, n)
df[1] <- date
df[2] <- var
names(df) <- c("date", "var")
df <- as_tbl_time(df, index = date)

year <- paste("1979-09")
paste0("~", '"', year, '"')
#> [1] "~\"1979-09\""

as.formula(paste0("~", '"', year, '"'))
#> ~"1979-09"

filter_time(df, as.formula(paste0("~", '"', year, '"')))
#> # A time tibble: 1 x 2
#> # Index: date
#>   date         var
#>   <date>     <int>
#> 1 1979-09-01  3600
票数 2
EN

Stack Overflow用户

发布于 2021-09-27 19:46:38

我们可以使用reformulate来构造表达式

代码语言:javascript
复制
library(tibbletime)
filter_time(df, reformulate(termlabels = dQuote("1979-09", FALSE)))

-output

代码语言:javascript
复制
# A time tibble: 1 × 2
# Index: date
  date         var
  <date>     <int>
1 1979-09-01  1700
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69352418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档