在函数内取差时出错
Error taking the difference within a function
下面的函数是我以前在 fulldiam
是矢量时能够使用的函数。
dN <- sapply(df,function(dn,fulldiam) 0.5*(head(dn,-1)+tail(dn,-1))*
abs(diff(log10(fulldiam))),fulldiam)
在此函数中,df
是一个数字 data.frame(dim = 99 x 1399),fulldiam
是一个数字向量(长度 = 99)。
我试图通过将 fulldiam
向量更改为每个向量略有不同的位置来更改数据。所以现在我正在尝试使用 fulldiam_shifted
这是一个数字 data.frame (dim = 99 x 1399)。当我尝试 运行 带有更改的函数时,出现错误。
dN_shift <- sapply(df,function(dn,fulldiam_shifted) 0.5*(head(dn,-1)+tail(dn,-1))*
abs(diff(log10(fulldiam_shifted))),fulldiam_shifted)
Error in r[i1] - r[-length(r):-(length(r) - lag + 1L)] :
non-numeric argument to binary operator
我认为问题在于 fulldiam_shifted
需要为 df
的每一行调用每一列。有什么建议可以让这个功能发挥作用吗?
我们可以在这里使用Map
,因为两个数据集的维度相同
Map(function(dn, fulldiam_new) 0.5*(head(dn,-1)+tail(dn,-1))*
abs(diff(log10(fulldiam_new))), df, fulldiam_shifted)
下面的函数是我以前在 fulldiam
是矢量时能够使用的函数。
dN <- sapply(df,function(dn,fulldiam) 0.5*(head(dn,-1)+tail(dn,-1))*
abs(diff(log10(fulldiam))),fulldiam)
在此函数中,df
是一个数字 data.frame(dim = 99 x 1399),fulldiam
是一个数字向量(长度 = 99)。
我试图通过将 fulldiam
向量更改为每个向量略有不同的位置来更改数据。所以现在我正在尝试使用 fulldiam_shifted
这是一个数字 data.frame (dim = 99 x 1399)。当我尝试 运行 带有更改的函数时,出现错误。
dN_shift <- sapply(df,function(dn,fulldiam_shifted) 0.5*(head(dn,-1)+tail(dn,-1))*
abs(diff(log10(fulldiam_shifted))),fulldiam_shifted)
Error in r[i1] - r[-length(r):-(length(r) - lag + 1L)] :
non-numeric argument to binary operator
我认为问题在于 fulldiam_shifted
需要为 df
的每一行调用每一列。有什么建议可以让这个功能发挥作用吗?
我们可以在这里使用Map
,因为两个数据集的维度相同
Map(function(dn, fulldiam_new) 0.5*(head(dn,-1)+tail(dn,-1))*
abs(diff(log10(fulldiam_new))), df, fulldiam_shifted)