R为每一行查找函数的根
我有一个大约400个观察值(行)的数据集。对于每一行,我需要找到一个函数的根,比如:f(x)=variable_1-variable_2+x 为了找到根,我想使用rootSolve包中的函数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
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