我如何将一个字符串从textInput传递给闪亮的R中的funktion(如nls)

时间:2017-07-14 19:26:41

标签: r shiny

我想写一个闪亮的应用程序,它应该计算非线性拟合函数的参数。要计算nls,需要使用参数的起始值。因此,理想情况下,用户应该能够在一个textInput中编写公式,并在额外的textInput中设置已使用参数的起始值,例如a*x^2a=1

现在我很难将第二个textInput的条目传递给start的{​​{1}}参数。

nls()不起作用,它说"无效的第一个参数"我试图通过start=input$set_startnoquote()摆脱引用,并尝试使用as.name()获取值,但是它说'#34; object' a = 1&#39 ;找不到"有没有人为这项任务提供解决方案?

以下示例无法在此设置中使用,但如果您直接设置起始值并输入get()而不是a=1则可以使用

start=input$set_start

1 个答案:

答案 0 :(得分:0)

我能找到的问题的唯一直接解决方案是使用可怕的eval(parse(text="xyzzy")),这最初看起来有点过分。

此外,要正确构建list,最好eval解析整个表达式,如start = list(a=1)

    st <- paste0("list(",input$set_start, ")")
    nls(formula="y~a*x^2",
       data=df,
       start=eval(parse(text=st)) )

更简单的替代方法是输入值而不是表达式并直接使用它 - :)