如何在函数中访问/使用R对象的名称?(第二部分)

如何在函数中访问/使用R对象的名称?(第二部分),r,dplyr,nse,R,Dplyr,Nse,就上下文而言,这是 我想创建一个函数,从学术学分向量中创建一些值。1.5学分等于在我的国家学习一周,这意味着我可以使用每个模块的学分向量来确定特定日期的预期学分 为清晰起见,向量如下所示: Ekonom<-c(15,15,15,15,7.5,7.5,15,7.5,7.5,15,15,15,30,0) structure(list(sd = structure(c(15586, 15586, 15586, 15586, 15586, 15586, 15586, 15586, 15586,

就上下文而言,这是

我想创建一个函数,从学术学分向量中创建一些值。1.5学分等于在我的国家学习一周,这意味着我可以使用每个模块的学分向量来确定特定日期的预期学分

为清晰起见,向量如下所示:

Ekonom<-c(15,15,15,15,7.5,7.5,15,7.5,7.5,15,15,15,30,0)
structure(list(sd = structure(c(15586, 15586, 15586, 15586, 15586, 
15586, 15586, 15586, 15586, 15586, 15586, 15586, 15586, 15586, 
15950, 15950, 15950, 15950, 15950, 15950, 15950, 15950, 15950, 
15950, 15950, 15950, 15950, 15950, 16314, 16314, 16314, 16314, 
16314, 16314, 16314, 16314, 16314, 16314, 16314, 16314, 16314, 
16314, 16678, 16678, 16678, 16678, 16678, 16678, 16678, 16678, 
16678, 16678, 16678, 16678, 16678, 16678, 17042, 17042, 17042, 
17042, 17042, 17042, 17042, 17042, 17042, 17042, 17042, 17042, 
17042, 17042, 17406, 17406, 17406, 17406, 17406, 17406, 17406, 
17406, 17406, 17406, 17406, 17406, 17406, 17406, 17777, 17777, 
17777, 17777, 17777, 17777, 17777, 17777, 17777, 17777, 17777, 
17777, 17777, 17777, 18141, 18141, 18141, 18141, 18141, 18141, 
18141, 18141, 18141, 18141, 18141, 18141, 18141, 18141), class = "Date"), 
    points_ekon = c(15, 15, 15, 15, 7.5, 7.5, 15, 7.5, 7.5, 15, 
    15, 15, 30, 0, 15, 15, 15, 15, 7.5, 7.5, 15, 7.5, 7.5, 15, 
    15, 15, 30, 0, 15, 15, 15, 15, 7.5, 7.5, 15, 7.5, 7.5, 15, 
    15, 15, 30, 0, 15, 15, 15, 15, 7.5, 7.5, 15, 7.5, 7.5, 15, 
    15, 15, 30, 0, 15, 15, 15, 15, 7.5, 7.5, 15, 7.5, 7.5, 15, 
    15, 15, 30, 0, 15, 15, 15, 15, 7.5, 7.5, 15, 7.5, 7.5, 15, 
    15, 15, 30, 0, 15, 15, 15, 15, 7.5, 7.5, 15, 7.5, 7.5, 15, 
    15, 15, 30, 0, 15, 15, 15, 15, 7.5, 7.5, 15, 7.5, 7.5, 15, 
    15, 15, 30, 0), summer_break_ekon = c(0, 0, 0, 0, 1, 1, 1, 
    1, 1, 1, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 
    2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 0, 0, 0, 
    0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 
    1, 1, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 
    2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 0, 0, 0, 0, 
    1, 1, 1, 1, 1, 1, 2, 2, 2, 2), weeks_course = c(10, 10, 10, 
    10, 5, 5, 10, 5, 5, 10, 10, 10, 20, 0, 10, 10, 10, 10, 5, 
    5, 10, 5, 5, 10, 10, 10, 20, 0, 10, 10, 10, 10, 5, 5, 10, 
    5, 5, 10, 10, 10, 20, 0, 10, 10, 10, 10, 5, 5, 10, 5, 5, 
    10, 10, 10, 20, 0, 10, 10, 10, 10, 5, 5, 10, 5, 5, 10, 10, 
    10, 20, 0, 10, 10, 10, 10, 5, 5, 10, 5, 5, 10, 10, 10, 20, 
    0, 10, 10, 10, 10, 5, 5, 10, 5, 5, 10, 10, 10, 20, 0, 10, 
    10, 10, 10, 5, 5, 10, 5, 5, 10, 10, 10, 20, 0), points_expected = c(0, 
    15, 30, 45, 60, 67.5, 75, 90, 97.5, 105, 120, 135, 150, 180, 
    0, 15, 30, 45, 60, 67.5, 75, 90, 97.5, 105, 120, 135, 150, 
    180, 0, 15, 30, 45, 60, 67.5, 75, 90, 97.5, 105, 120, 135, 
    150, 180, 0, 15, 30, 45, 60, 67.5, 75, 90, 97.5, 105, 120, 
    135, 150, 180, 0, 15, 30, 45, 60, 67.5, 75, 90, 97.5, 105, 
    120, 135, 150, 180, 0, 15, 30, 45, 60, 67.5, 75, 90, 97.5, 
    105, 120, 135, 150, 180, 0, 15, 30, 45, 60, 67.5, 75, 90, 
    97.5, 105, 120, 135, 150, 180, 0, 15, 30, 45, 60, 67.5, 75, 
    90, 97.5, 105, 120, 135, 150, 180), order = c(1L, 2L, 3L, 
    4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 1L, 2L, 
    3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 1L, 
    2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 
    1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 
    1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 
    1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 
    1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 
    1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L
    )), row.names = c(NA, -112L), class = c("tbl_df", "tbl", 
"data.frame"))

Small exerpt of data:

structure(list(UTBILDNINGSTILLFALLE_STARTDATUM = structure(c(15586, 
15586, 15586, 15586, 15586, 15586, 15586, 15586, NA, 15586, 15586, 
NA, 15586, 15586, 15586, NA, 15586, 15586, 15586, 15586), class = "Date"), 
    program = c("Ekonom", "Mäklarekonom", "Ekonom", "Mäklarekonom", 
    "Ekonom", "Ekonom", "Ekonom", "Ekonom", "Mäklarekonom", "Ekonom", 
    "Ekonom", "Mäklarekonom", "Ekonom", "Ekonom", "Mäklarekonom", 
    "Mäklarekonom", "Ekonom", "Ekonom", "Mäklarekonom", "Mäklarekonom"
    )), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, 
-20L))
我做错了什么?我怎样才能使这项工作成功

我想要的输出如下所示:

Ekonom<-c(15,15,15,15,7.5,7.5,15,7.5,7.5,15,15,15,30,0)
structure(list(sd = structure(c(15586, 15586, 15586, 15586, 15586, 
15586, 15586, 15586, 15586, 15586, 15586, 15586, 15586, 15586, 
15950, 15950, 15950, 15950, 15950, 15950, 15950, 15950, 15950, 
15950, 15950, 15950, 15950, 15950, 16314, 16314, 16314, 16314, 
16314, 16314, 16314, 16314, 16314, 16314, 16314, 16314, 16314, 
16314, 16678, 16678, 16678, 16678, 16678, 16678, 16678, 16678, 
16678, 16678, 16678, 16678, 16678, 16678, 17042, 17042, 17042, 
17042, 17042, 17042, 17042, 17042, 17042, 17042, 17042, 17042, 
17042, 17042, 17406, 17406, 17406, 17406, 17406, 17406, 17406, 
17406, 17406, 17406, 17406, 17406, 17406, 17406, 17777, 17777, 
17777, 17777, 17777, 17777, 17777, 17777, 17777, 17777, 17777, 
17777, 17777, 17777, 18141, 18141, 18141, 18141, 18141, 18141, 
18141, 18141, 18141, 18141, 18141, 18141, 18141, 18141), class = "Date"), 
    points_ekon = c(15, 15, 15, 15, 7.5, 7.5, 15, 7.5, 7.5, 15, 
    15, 15, 30, 0, 15, 15, 15, 15, 7.5, 7.5, 15, 7.5, 7.5, 15, 
    15, 15, 30, 0, 15, 15, 15, 15, 7.5, 7.5, 15, 7.5, 7.5, 15, 
    15, 15, 30, 0, 15, 15, 15, 15, 7.5, 7.5, 15, 7.5, 7.5, 15, 
    15, 15, 30, 0, 15, 15, 15, 15, 7.5, 7.5, 15, 7.5, 7.5, 15, 
    15, 15, 30, 0, 15, 15, 15, 15, 7.5, 7.5, 15, 7.5, 7.5, 15, 
    15, 15, 30, 0, 15, 15, 15, 15, 7.5, 7.5, 15, 7.5, 7.5, 15, 
    15, 15, 30, 0, 15, 15, 15, 15, 7.5, 7.5, 15, 7.5, 7.5, 15, 
    15, 15, 30, 0), summer_break_ekon = c(0, 0, 0, 0, 1, 1, 1, 
    1, 1, 1, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 
    2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 0, 0, 0, 
    0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 
    1, 1, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 
    2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 0, 0, 0, 0, 
    1, 1, 1, 1, 1, 1, 2, 2, 2, 2), weeks_course = c(10, 10, 10, 
    10, 5, 5, 10, 5, 5, 10, 10, 10, 20, 0, 10, 10, 10, 10, 5, 
    5, 10, 5, 5, 10, 10, 10, 20, 0, 10, 10, 10, 10, 5, 5, 10, 
    5, 5, 10, 10, 10, 20, 0, 10, 10, 10, 10, 5, 5, 10, 5, 5, 
    10, 10, 10, 20, 0, 10, 10, 10, 10, 5, 5, 10, 5, 5, 10, 10, 
    10, 20, 0, 10, 10, 10, 10, 5, 5, 10, 5, 5, 10, 10, 10, 20, 
    0, 10, 10, 10, 10, 5, 5, 10, 5, 5, 10, 10, 10, 20, 0, 10, 
    10, 10, 10, 5, 5, 10, 5, 5, 10, 10, 10, 20, 0), points_expected = c(0, 
    15, 30, 45, 60, 67.5, 75, 90, 97.5, 105, 120, 135, 150, 180, 
    0, 15, 30, 45, 60, 67.5, 75, 90, 97.5, 105, 120, 135, 150, 
    180, 0, 15, 30, 45, 60, 67.5, 75, 90, 97.5, 105, 120, 135, 
    150, 180, 0, 15, 30, 45, 60, 67.5, 75, 90, 97.5, 105, 120, 
    135, 150, 180, 0, 15, 30, 45, 60, 67.5, 75, 90, 97.5, 105, 
    120, 135, 150, 180, 0, 15, 30, 45, 60, 67.5, 75, 90, 97.5, 
    105, 120, 135, 150, 180, 0, 15, 30, 45, 60, 67.5, 75, 90, 
    97.5, 105, 120, 135, 150, 180, 0, 15, 30, 45, 60, 67.5, 75, 
    90, 97.5, 105, 120, 135, 150, 180), order = c(1L, 2L, 3L, 
    4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 1L, 2L, 
    3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 1L, 
    2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 
    1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 
    1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 
    1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 
    1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 
    1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L
    )), row.names = c(NA, -112L), class = c("tbl_df", "tbl", 
"data.frame"))

Small exerpt of data:

structure(list(UTBILDNINGSTILLFALLE_STARTDATUM = structure(c(15586, 
15586, 15586, 15586, 15586, 15586, 15586, 15586, NA, 15586, 15586, 
NA, 15586, 15586, 15586, NA, 15586, 15586, 15586, 15586), class = "Date"), 
    program = c("Ekonom", "Mäklarekonom", "Ekonom", "Mäklarekonom", 
    "Ekonom", "Ekonom", "Ekonom", "Ekonom", "Mäklarekonom", "Ekonom", 
    "Ekonom", "Mäklarekonom", "Ekonom", "Ekonom", "Mäklarekonom", 
    "Mäklarekonom", "Ekonom", "Ekonom", "Mäklarekonom", "Mäklarekonom"
    )), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, 
-20L))

该错误可能与使用
==
而不是
过滤器(程序%in%as.character(rlang::enexpr(x))有关)
这是以额外的偏执或其他东西为前提的吗?当我试着把这些加号放到左边,表示缺少了什么。这对你有用吗<代码>开始日期%filter(程序%in%as.character(rlang::enexpr(x)))%%>%distinct(UTBILDNINGSTILLFALLE\u STARTDATUM)%%>%drop\u na();开始日期(x=c(“Ekonom”、“Mäklarekonom”)如果您试图提供向量,则需要在%中使用
%。另外,您的
rlang
表达式在这里可能不必要,这也适用:
start\u dates%filter(程序%in%x)%%>%distinct(UTBILDNINGSTILLFALLE\u STARTDATUM)%%>%drop\u na();开始日期(x=c(“Ekonom”、“Mäklarekonom”)
您不显示调用函数的代码。你在传递什么?期望的输出是什么?在每一行重复
program%…
也是很奇怪的。这有点忽略了管道操作员的重点
structure(list(sd = structure(c(15586, 15586, 15586, 15586, 15586, 
15586, 15586, 15586, 15586, 15586, 15586, 15586, 15586, 15586, 
15950, 15950, 15950, 15950, 15950, 15950, 15950, 15950, 15950, 
15950, 15950, 15950, 15950, 15950, 16314, 16314, 16314, 16314, 
16314, 16314, 16314, 16314, 16314, 16314, 16314, 16314, 16314, 
16314, 16678, 16678, 16678, 16678, 16678, 16678, 16678, 16678, 
16678, 16678, 16678, 16678, 16678, 16678, 17042, 17042, 17042, 
17042, 17042, 17042, 17042, 17042, 17042, 17042, 17042, 17042, 
17042, 17042, 17406, 17406, 17406, 17406, 17406, 17406, 17406, 
17406, 17406, 17406, 17406, 17406, 17406, 17406, 17777, 17777, 
17777, 17777, 17777, 17777, 17777, 17777, 17777, 17777, 17777, 
17777, 17777, 17777, 18141, 18141, 18141, 18141, 18141, 18141, 
18141, 18141, 18141, 18141, 18141, 18141, 18141, 18141), class = "Date"), 
    points_ekon = c(15, 15, 15, 15, 7.5, 7.5, 15, 7.5, 7.5, 15, 
    15, 15, 30, 0, 15, 15, 15, 15, 7.5, 7.5, 15, 7.5, 7.5, 15, 
    15, 15, 30, 0, 15, 15, 15, 15, 7.5, 7.5, 15, 7.5, 7.5, 15, 
    15, 15, 30, 0, 15, 15, 15, 15, 7.5, 7.5, 15, 7.5, 7.5, 15, 
    15, 15, 30, 0, 15, 15, 15, 15, 7.5, 7.5, 15, 7.5, 7.5, 15, 
    15, 15, 30, 0, 15, 15, 15, 15, 7.5, 7.5, 15, 7.5, 7.5, 15, 
    15, 15, 30, 0, 15, 15, 15, 15, 7.5, 7.5, 15, 7.5, 7.5, 15, 
    15, 15, 30, 0, 15, 15, 15, 15, 7.5, 7.5, 15, 7.5, 7.5, 15, 
    15, 15, 30, 0), summer_break_ekon = c(0, 0, 0, 0, 1, 1, 1, 
    1, 1, 1, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 
    2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 0, 0, 0, 
    0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 
    1, 1, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 
    2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 0, 0, 0, 0, 
    1, 1, 1, 1, 1, 1, 2, 2, 2, 2), weeks_course = c(10, 10, 10, 
    10, 5, 5, 10, 5, 5, 10, 10, 10, 20, 0, 10, 10, 10, 10, 5, 
    5, 10, 5, 5, 10, 10, 10, 20, 0, 10, 10, 10, 10, 5, 5, 10, 
    5, 5, 10, 10, 10, 20, 0, 10, 10, 10, 10, 5, 5, 10, 5, 5, 
    10, 10, 10, 20, 0, 10, 10, 10, 10, 5, 5, 10, 5, 5, 10, 10, 
    10, 20, 0, 10, 10, 10, 10, 5, 5, 10, 5, 5, 10, 10, 10, 20, 
    0, 10, 10, 10, 10, 5, 5, 10, 5, 5, 10, 10, 10, 20, 0, 10, 
    10, 10, 10, 5, 5, 10, 5, 5, 10, 10, 10, 20, 0), points_expected = c(0, 
    15, 30, 45, 60, 67.5, 75, 90, 97.5, 105, 120, 135, 150, 180, 
    0, 15, 30, 45, 60, 67.5, 75, 90, 97.5, 105, 120, 135, 150, 
    180, 0, 15, 30, 45, 60, 67.5, 75, 90, 97.5, 105, 120, 135, 
    150, 180, 0, 15, 30, 45, 60, 67.5, 75, 90, 97.5, 105, 120, 
    135, 150, 180, 0, 15, 30, 45, 60, 67.5, 75, 90, 97.5, 105, 
    120, 135, 150, 180, 0, 15, 30, 45, 60, 67.5, 75, 90, 97.5, 
    105, 120, 135, 150, 180, 0, 15, 30, 45, 60, 67.5, 75, 90, 
    97.5, 105, 120, 135, 150, 180, 0, 15, 30, 45, 60, 67.5, 75, 
    90, 97.5, 105, 120, 135, 150, 180), order = c(1L, 2L, 3L, 
    4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 1L, 2L, 
    3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 1L, 
    2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 
    1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 
    1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 
    1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 
    1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 
    1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L
    )), row.names = c(NA, -112L), class = c("tbl_df", "tbl", 
"data.frame"))

Small exerpt of data:

structure(list(UTBILDNINGSTILLFALLE_STARTDATUM = structure(c(15586, 
15586, 15586, 15586, 15586, 15586, 15586, 15586, NA, 15586, 15586, 
NA, 15586, 15586, 15586, NA, 15586, 15586, 15586, 15586), class = "Date"), 
    program = c("Ekonom", "Mäklarekonom", "Ekonom", "Mäklarekonom", 
    "Ekonom", "Ekonom", "Ekonom", "Ekonom", "Mäklarekonom", "Ekonom", 
    "Ekonom", "Mäklarekonom", "Ekonom", "Ekonom", "Mäklarekonom", 
    "Mäklarekonom", "Ekonom", "Ekonom", "Mäklarekonom", "Mäklarekonom"
    )), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, 
-20L))