在第二个R函数中调用通过一个R函数提示的用户输入

数码人

在此先非常感谢您的帮助-我是R编程的新手,并且一直试图在一个函数中使用通过一个函数接受的用户输入。第二个功能是一个简单的工资计算器,其中的三个变量是小时数,每小时工资率和工作时间超过180小时后乘以工资率的次数。要求用户输入上述变量。在另一个名为薪金的函数中,我试图在运行支出计算之前使用enterval接受输入。我陷入困境是因为当我达到“ if”条件时,第二个函数薪水中断,指定h>180。我在下面共享我的代码。再次感谢您的协助。我在先前的答案中进行搜索,但找不到能完全回答我的查询的特定实例-如果错过了适当的先前答案,我深表歉意。我在运行此代码时遇到的错误是“ h> 180中的错误:比较(6)仅适用于原子类型和列表类型”

enterval <- function()  {
h <- (readline("Please enter number of hours: "))
h <- as.integer(h)
r <- (readline("Please enter applicable rate: "))
r <- as.integer(r)
m <- (readline("Please confirm your multiplier: "))
m <- as.integer(m)
}
salary <- function ()  {
    enterval()
    if (h > 180)  {
        totalpay <- (180*r) + ((h-180)*r*m)
        }
    else  {
        totalpay <- (h*r)
        }
    totalpay
}
LyzandeR

我认为您需要的功能是这样的:

enterval <- function()  {
  h <- (readline("Please enter number of hours: "))
  h <- as.numeric(h)
  r <- (readline("Please enter applicable rate: "))
  r <- as.numeric(r)
  m <- (readline("Please confirm your multiplier: "))
  m <- as.numeric(m)
  list(h=h, r=r, m=m)
}

salary <- function ()  {
  inputs <- enterval()
  if (inputs$h > 180)  {
    totalpay <- (180*inputs$r) + ((inputs$h-180)*inputs$r*inputs$m)
  }
  else  {
    totalpay <- (inputs$h*inputs$r)
  }
  totalpay
}

输出:

> salary()
Please enter number of hours: 5
Please enter applicable rate: 0.5
Please confirm your multiplier: 2
[1] 2.5

在您的问题中,enterval只返回了存储在其中的值,m但即使没有将其保存在任何地方(因为您没有将其赋给内部变量,salary因此它无法被使用salary。)在R函数中,仅返回最后一个对象(或函数return返回的值在上面的函数中,我返回一个包含hr元素的列表m

然后,我将该列表保存为inputs可以使用的列表salaryinputs可以使用$运算符访问其中的元素

另外,作为一个小的补充,当您说出速率时,我相信它是0-1之间的数字,所以我更改as.integer为,as.numeric因为as.integer它将四舍五入为整数。as.integer如果确实需要整数,请随时将其更改回

编辑

更好并且可能更高级的写作方式salary

根据@RichardScriven的注释,避免键入所有input$*变量的一种好方法list2env像这样使用

salary <- function ()  {
  inputs <- enterval()
  list2env(inputs, environment())
  if (h > 180)  {
    totalpay <- (180*r) + (h-180)*r*m)
  }
  else  {
    totalpay <- (h*r)
  }
  totalpay
}

list2env本质上将在薪金环境内的列表元素之外创建变量,无需使用即可立即访问这些变量input$*

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过R中的foo(x,bar)的第二个参数调用的泛型函数

来自分类Dev

第一个执行后如何调用第二个函数?

来自分类Dev

DatePeriod迭代的函数在第二个函数调用中丢失了一天

来自分类Dev

仅在调用第一个函数后调用第二个函数 - 反应原生

来自分类Dev

函数从不调用第二个函数

来自分类Dev

基于 R 中的第二个列表在一个列表中求和词频

来自分类Dev

替换R中第一个出现的“:”,而不是第二个

来自分类Dev

将函数传递给Javascript中的函数会立即调用第二个函数

来自分类Dev

用第一个构造函数执行第二个构造函数

来自分类Dev

如果第一个函数失败,则应用第二个函数

来自分类Dev

执行第二个函数,基于第一个函数的结果

来自分类Dev

将变量从一个函数传递到第二个函数 python

来自分类Dev

通过用户在第一个下拉菜单中的输入来更改第二个下拉菜单中的选项

来自分类Dev

将函数应用于列表,然后遍历r中的第二个变量

来自分类Dev

为什么编译器调用的是第一个重载函数而不是第二个?

来自分类Dev

在元素的第二个动画上调用Promise函数而不是第一个?

来自分类Dev

为什么第二个 JS 异步函数调用等待第一个完成?

来自分类Dev

如何在第二个构造函数中调用构造函数?

来自分类Dev

来自类的C ++第二个函数无权访问第一个

来自分类Dev

如何从第二个引用函数的第一个参数?(python 2.7)

来自分类Dev

2 setTimeout函数第一个清除第二个javascript

来自分类Dev

返回作为第二个参数传递的数组中第一个参数的索引的函数

来自分类Dev

TypeScript:如何根据第一个参数省略函数中的第二个参数

来自分类Dev

我如何在javascript中先调用函数然后调用第二个

来自分类Dev

即使第一个函数调用第二个函数,函数也没有以正确的顺序触发

来自分类Dev

函数声明中的第二个返回类型?

来自分类Dev

R-通过匹配第二个数据框中的列来乘以选择一个数据框中的列

来自分类Dev

如何在ReactJS onSubmit函数调用中传递第二个参数

来自分类Dev

第二个构造函数在C ++中调用(错误输出)

Related 相关文章

  1. 1

    通过R中的foo(x,bar)的第二个参数调用的泛型函数

  2. 2

    第一个执行后如何调用第二个函数?

  3. 3

    DatePeriod迭代的函数在第二个函数调用中丢失了一天

  4. 4

    仅在调用第一个函数后调用第二个函数 - 反应原生

  5. 5

    函数从不调用第二个函数

  6. 6

    基于 R 中的第二个列表在一个列表中求和词频

  7. 7

    替换R中第一个出现的“:”,而不是第二个

  8. 8

    将函数传递给Javascript中的函数会立即调用第二个函数

  9. 9

    用第一个构造函数执行第二个构造函数

  10. 10

    如果第一个函数失败,则应用第二个函数

  11. 11

    执行第二个函数,基于第一个函数的结果

  12. 12

    将变量从一个函数传递到第二个函数 python

  13. 13

    通过用户在第一个下拉菜单中的输入来更改第二个下拉菜单中的选项

  14. 14

    将函数应用于列表,然后遍历r中的第二个变量

  15. 15

    为什么编译器调用的是第一个重载函数而不是第二个?

  16. 16

    在元素的第二个动画上调用Promise函数而不是第一个?

  17. 17

    为什么第二个 JS 异步函数调用等待第一个完成?

  18. 18

    如何在第二个构造函数中调用构造函数?

  19. 19

    来自类的C ++第二个函数无权访问第一个

  20. 20

    如何从第二个引用函数的第一个参数?(python 2.7)

  21. 21

    2 setTimeout函数第一个清除第二个javascript

  22. 22

    返回作为第二个参数传递的数组中第一个参数的索引的函数

  23. 23

    TypeScript:如何根据第一个参数省略函数中的第二个参数

  24. 24

    我如何在javascript中先调用函数然后调用第二个

  25. 25

    即使第一个函数调用第二个函数,函数也没有以正确的顺序触发

  26. 26

    函数声明中的第二个返回类型?

  27. 27

    R-通过匹配第二个数据框中的列来乘以选择一个数据框中的列

  28. 28

    如何在ReactJS onSubmit函数调用中传递第二个参数

  29. 29

    第二个构造函数在C ++中调用(错误输出)

热门标签

归档