【问题标题】:Function with two arguments in RR中有两个参数的函数
【发布时间】:2021-02-14 16:07:30
【问题描述】:

我正在尝试更好地理解函数并在网上找到了一个示例,但无法使其正常工作。 我想解方程 a,并有两个参数 v 和 r。 v = 10,r = 3。这是我的代码。我错过了什么?感谢您的见解。

solve <- function(r=3,v=10) {
a <- pi*r*(sqrt(r^2+(9*v^2)/pi^2*r^4)) 
}
return(a)

基于输入。这是更新的代码。但看起来结果不准确。

solve <- function(r,v){
a <- pi*r*(sqrt(r^2+(9*v^2)/pi^2*r^4)) 
return(a)
}
solve(3,10)

R 给我的结果是 810.4933。但是示例显示结果是 29.9906。 下面是 A 的公式: enter image description here

【问题讨论】:

  • return(a) 需要在花括号内{ ... }
  • @G5W 是对的,尽管总是假设赋值操作的返回值返回整个数据集可能是不好的做法;例如,如果它是一个子集赋值(例如,a[is.na(a)] &lt;- -42 计数相同,它不会返回所有 a)。我建议使最后一个表达式完全符合您想要返回的内容(即此处为a),也可以选择使用return(a)
  • 谢谢。我修改了我的代码。它看起来像它的工作。但结果与网上的例子不符。它应该是 29,9906,但我得到的是 810.4933。求解
  • 如果您也更新问题中的代码,这将有所帮助 (edit)。当此处显示的代码已知错误但未更正时,很难提供帮助:我们无法始终知道您认为自己所做的和实际所做的是否相同。 (仅供参考,除了 cmets 不能很好地格式化大数据或代码这一事实之外,cmets 很容易被读者跳过和/或被界面隐藏。谢谢。)

标签: r function arguments


【解决方案1】:

您需要知道数学表达式中的运算顺序。如果您阅读?Ops(有点晦涩,授予),您会看到

       2. Group '"Ops"':
            • '"+"', '"-"', '"*"', '"/"', '"^"', '"%%"', '"%/%"'
            • '"&"', '"|"', '"!"'
            • '"=="', '"!="', '"<"', '"<="', '">="', '">"'

这表明*/ 是连续的。不幸的是,您的分母

... / pi^2*r^4

被解释为

(... / pi^2) * (r^4)

r^4 带入分子中。

添加括号以强制执行操作顺序。

.../(pi^2*r^4)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-12
    • 2016-05-02
    • 2018-10-20
    • 1970-01-01
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    • 2013-08-02
    相关资源
    最近更新 更多