R为每一行查找函数的根

R为每一行查找函数的根,r,R,我有一个大约400个观察值(行)的数据集。对于每一行,我需要找到一个函数的根,比如:f(x)=variable_1-variable_2+x 为了找到根,我想使用rootSolve包中的函数uniroot.all(f,interval) 我的问题是,如何对每一行执行此操作。我应该使用循环还是“应用”更适合这样做 使用“apply”时,我尝试了以下代码,但总是收到错误消息 > library(rootSolve) > df<-as.data.frame(matrix(1:6,nc

我有一个大约400个观察值(行)的数据集。对于每一行,我需要找到一个函数的根,比如:f(x)=variable_1-variable_2+x

为了找到根,我想使用rootSolve包中的函数
uniroot.all(f,interval)

我的问题是,如何对每一行执行此操作。我应该使用循环还是“应用”更适合这样做

使用“apply”时,我尝试了以下代码,但总是收到错误消息

> library(rootSolve)
> df<-as.data.frame(matrix(1:6,ncol=2))
> df
  V1 V2
1  1  4
2  2  5
3  3  6

> apply(df,1,uniroot.all(fun<- function(x) df$V1-df$V2 + x, interval=c(0,100)))
>库(rootSolve)
>df-df
V1 V2
1  1  4
2  2  5
3  3  6

>apply(df,1,uniroot.all)(fun这里是使用
apply
时的正确语法:

apply(df, 1,
      function(z) uniroot.all(function(x)z[1]-z[2]+x,
                              interval = c(0,100)))
# [1] 3 3 3
就个人而言,我喜欢使用
plyr
包来处理这类事情,因此我可以通过变量的列名来访问变量(这里是
V1
V2
):


以下是使用
apply
时的正确语法:

apply(df, 1,
      function(z) uniroot.all(function(x)z[1]-z[2]+x,
                              interval = c(0,100)))
# [1] 3 3 3
就个人而言,我喜欢使用
plyr
包来处理这类事情,因此我可以通过变量的列名来访问变量(这里是
V1
V2
):


这确实是您的问题还是您只是提供了一个简化的示例?否则x=-(df$V1-df$V2)是您的解决方案,不需要使用uniroot。这只是一个简化的示例。这确实是您的问题还是您只是提供了一个简化的示例?否则x=-(df$V1-df$V2)这是你的解决方案,不需要使用uniroot。这只是一个简单的例子。非常感谢flodel!Julius和你救了我一天。干杯,HeikeMany谢谢flodel!Julius和你救了我一天。干杯,Heike