R:在应用程序中使用sapply时获得NA

R:在应用程序中使用sapply时获得NA,r,apply,sapply,R,Apply,Sapply,在timeseries对象上运行下面的代码时,我得到了NAs。实际上,我正试图通过扩展窗口对每列数据应用upDownCapture。我通过使用sapply和seq_实现了这一点 apply(data[,1:5],2, function(x) unlist(sapply(seq_along(x), function(i) upDownCapture(x[i:length(x)],idx[i:length(x)],12,'b')))) 在哪里 我无法理解应用于sapply for updownca

在timeseries对象上运行下面的代码时,我得到了NAs。实际上,我正试图通过扩展窗口对每列数据应用upDownCapture。我通过使用sapply和seq_实现了这一点

apply(data[,1:5],2, function(x) unlist(sapply(seq_along(x), function(i) upDownCapture(x[i:length(x)],idx[i:length(x)],12,'b'))))
在哪里

我无法理解应用于sapply for updowncapture功能会丢失哪些信息。我在数据上运行了sapply和upDownCapture,它们似乎工作得很好

数据集看起来像

 head(Data[,1])
                                                              A
1997-01-31                                                      -0.0002
1997-02-28                                                      -0.0428
1997-03-31                                                       0.0827
1997-04-30                                                       NA
1997-05-31                                                       0.0351
1997-06-30                                                       0.0749

head(idx)
                Russell 1000
1997-01-31      0.00384
1997-02-28     -0.04504
1997-03-31      0.05411
1997-04-30      0.06404
1997-05-31      0.04144
1997-06-30      0.08183

谢谢你的帮助

您能否提供示例数据以使其可复制?您的
apply
将data.frame(或矩阵)的列传递给您的匿名
函数(x)
,该函数传递给sapply,sapply将输入转换为
1:length(该列)
,然后传递给您的匿名
函数(i)
。在这一步中,您(可能是无意中)滥用了R的作用域规则,试图从x中子集一些元素,而这些元素从未传递给匿名函数。x在您的全球环境中的某个位置。此外,对于每个应用迭代,传递给
upDownCapture
的所有x和y都是相同的。什么是x?如果可以,请将dput(头(x))粘贴到这里。@Vlo-请查看结构(c(-2e-04,-0.0428,0.0827,0.0468,0.0351,0.0749),class=c(“xts”,“zoo”),.indexCLASS=“Date”、.indexTZ=“UTC”,tclass=“Date”,tzone=“UTC”,index=structure(c(854668800,857088000,859766400,862358400,865036800,867628800),tzone=“UTC”,tlass=“Date”),.Dim=c(6L,1L),.Dimnames=列表(空,“A”))数据中有一些NAs,因此每次迭代都不相同。@JasonAizkalns-添加了示例数据,感谢我将
i
误读为
1
。您的
x和
y`在每次迭代中都不同。您确定
(dim(数据集)[1]>=minLen)
条件在每次运行期间都会满足?x和
数据之间的关系是什么?
数据中的数值似乎一点都不重要。您能否提供示例数据以使其可复制?您的
应用
传递data.frame(或矩阵)的列到您的匿名
函数(x)
,该函数被传递到sapply,sapply将输入转换为
1:length(该列)
,然后传递到您的匿名
函数(i)
。在这一步中,您(可能是无意中)滥用R的作用域规则,试图将x中的某些元素子集,而这些元素从未传递给匿名函数。x位于全局环境中的某个位置。此外,传递给
upDownCapture
的所有x和y在每次应用迭代中都是相同的。什么是x?如果可以,请在此处粘贴dput(头(x))。@Vlo-请参阅结构(c(-2e-04,-0.0428,0.0827,0.0468,0.0351,0.0749),class=c(“xts”,“zoo”),.indexCLASS=“Date”,.indexTZ=“UTC”,tclass=“Date”,tzone=“UTC”,tclass=“Date”,tzone=“UTC”,index=structure(c(854668800,857088000,859766400,862358400,865036800,867628800),tzone=“UTC”,tclass=“Date”),.Dim=c(6L,1L),.Dimnames=list(NULL,“A”))数据中有一些NAs,因此每次迭代都不相同。@JasonAizkalns-添加了示例数据,感谢我将
i
误读为
1
。您的
x和
y`在每次迭代中都不同。您确定
(dim(数据集)[1]>=minLen)
条件在每次运行期间都得到满足?x和
数据
之间的关系是什么。看来
数据
中的数值一点都不重要。
as.zoo(apply(excessReturns,2, function(x) {sapply(seq_along(x), function(i) sd(x[i:length(x)],na.rm = TRUE))}),order.by = index(data)) 
 head(Data[,1])
                                                              A
1997-01-31                                                      -0.0002
1997-02-28                                                      -0.0428
1997-03-31                                                       0.0827
1997-04-30                                                       NA
1997-05-31                                                       0.0351
1997-06-30                                                       0.0749

head(idx)
                Russell 1000
1997-01-31      0.00384
1997-02-28     -0.04504
1997-03-31      0.05411
1997-04-30      0.06404
1997-05-31      0.04144
1997-06-30      0.08183