我正在尝试使用 mutate 在我的数据框中创建一个新列,并带有函数的输出。
这是我的代码
StockData <- StockData %>%
mutate(yrReturn=sapply(StockReturns[row_number()+1], yearReturn))
这是函数
yearReturn <- function(DailyReturns){
ans = 1.0;
for (day in 1:nrow(DailyReturns)){
ans = ans + ans * as.numeric(DailyReturns[day,1]);
}
print (ans)
return (ans - 1.0)
}
sapply 似乎有些事情不太正常,这会引发错误。
但这有效:
StockData <- StockData %>%
mutate(volatility = sapply(StockReturns[row_number()+1], sd))
期望使用 yrReturn 向 StockData 添加新列
sd 采用向量作为参数,而 dailyReturns 似乎采用 data.frame (您在其上使用 nrow )。
你需要改变:
mutate(yrReturn=sapply(StockReturns[row_number()+1],yearReturn))
到
mutate(yrReturn=sapply(StockReturns[row_number()+1,],yearReturn))
因此它向子函数发送一个data.frame。