如何将函数中的参数名称作为列值返回?

马格努斯

我正在从一个数字向量和一个开始日期向量生成一个参考表。我希望我的参考表中的一列等于我的第一个参数的名称(它应该为每一行读取“Ekonom”)。这很重要,因为我将把几个表连接在一起,因为我需要区分我的观察结果。

我的输入:

Ekonom<-c(15,15,15,15,7.5,7.5,15,7.5,7.5,15,15,15,30,0)
sdEkonom<-structure(c(15586, 15950, 16314, 16678, 17042, 17406, 17777, 
18141), class = "Date")

我的程序如下:

reference_table<-function(x,y){
summer_break<-ifelse(cumsum(x)<=60, 0, ifelse(cumsum(x)>60 & cumsum(x)<=120 , 1,2))
program<-cbind(x,summer_break)
program<-as.data.frame(program)
program<-program%>%rename(points=x)
program<-program%>%mutate(program=as.character(rlang::enexpr(x)))
program<-program%>%mutate(weeks_course=points/1.5)
program<-program%>%mutate(points_expected=lag(cumsum(points)))
program<-program%>%mutate(points_expected=ifelse(is.na(points_expected),0,points_expected))
program<-program%>%mutate(order=1:n())
program<-crossing(y, program)
program<-program%>%arrange(y, order)
program<-program%>%mutate(starttermin=ifelse(order==1,1,0))
program$kull<-cumsum(program$starttermin)
program<-program%>%mutate(start_date=y-1)
program<-program%>%group_by(kull)%>%mutate(start_date_points=start_date+lag(cumsum(weeks_course)*7+3*7+summer_break*12*7))
program<-program%>%group_by(kull)%>%mutate(end_date_points=start_date+cumsum(weeks_course)*7+3*7+summer_break*12*7-1)
program<-program%>%mutate(start_date_points=if_else(is.na(start_date_points),start_date,as.Date(start_date_points)))
program<-program%>%group_by(start_date)%>%mutate(finished_date=max(start_date_points))
program<-program%>%mutate(finished=ifelse(lead(kull, default=0)==kull,0,1))
}

特别重要的是这一行:

program<-program%>%mutate(program=as.character(rlang::enexpr(x)))

我通过编写来执行程序:

ekon_program<-reference_table(Ekonom, sdEkonom)

出于某种原因,该函数在我的程序列中没有将 x 计算为“Ekonom”,而是计算为“15”。为什么会发生这种情况以及如何获得正确的输出?

罗纳克·沙阿

之前定义变量并稍后在函数中使用它

library(dplyr)

reference_table<-function(x,y){

   col_values <- as.character(rlang::enexpr(x))
   summer_break<- ifelse(cumsum(x)<=60, 0, 
                         ifelse(cumsum(x) > 60 & cumsum(x)<=120 , 1,2))
   program<- data.frame(x,summer_break)
   program %>%
      rename(points=x) %>%
      mutate(program = col_values) 
}

reference_table(Ekonom, sdEkonom)

#   points summer_break program
#1    15.0            0  Ekonom
#2    15.0            0  Ekonom
#3    15.0            0  Ekonom
#4    15.0            0  Ekonom
#5     7.5            1  Ekonom
#6     7.5            1  Ekonom
#7    15.0            1  Ekonom
#8     7.5            1  Ekonom
#9     7.5            1  Ekonom
#10   15.0            1  Ekonom
#11   15.0            2  Ekonom
#12   15.0            2  Ekonom
#13   30.0            2  Ekonom
#14    0.0            2  Ekonom

在这种情况下,您还可以使用

col_values <- deparse(substitute(x))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用其他函数名称作为参数来定义函数

使用函数名称作为参数

如何将MongoDB集合名称作为参数传递给数据库连接函数-Python

如何将参数名称作为参数传递?

如何获得函数名称作为字符串?

如何在Python 3中将函数名称作为String传递

如何将环境变量的名称作为参数传递?

将System .Property名称作为函数参数传递

将函数名称作为脚本中的位置参数之一传递

将函数名称作为参数传递给mapply?

如何将对象的函数名称作为参数传递

使用函数名称作为命令

如何将参数名称作为参数传递给函数

clojure函数名称作为参数

如何将组件名称作为参数传递并在函数中接收它

如何将表单名称作为对象提交给php函数

想要将属性名称作为函数中的参数传递。

如何用指定的模块名称作为函数的参数在函数中创建(全局)Python模块?

如何将子类的函数名称作为参数传递给python中的父类方法?

Python3:将函数名称作为参数传递

如何将函数名称及其参数作为参数传递?

如何使函数返回传递的参数名称

破解我的代码-如何在JavaScript中的另一个函数中使用函数名称作为参数

如何将字符串列表的名称作为参数传递

如何将变量的值放入读取变量名称作为变量值的函数中?

如何将模块/方法名称作为命令行参数传递 python 2.7.10

将函数参数名称作为字符串传递

PostgreSQL - 如何将角色名称作为参数传递给过程?

我们如何将对象作为参数传递给对象值中的函数名?