使用 R 中的自定义函数进行变异

问题描述 投票:0回答:1

我正在尝试使用 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 添加新列

r apply mutate
1个回答
0
投票

sd 采用向量作为参数,而 dailyReturns 似乎采用 data.frame (您在其上使用 nrow )。

你需要改变:

mutate(yrReturn=sapply(StockReturns[row_number()+1],yearReturn))

mutate(yrReturn=sapply(StockReturns[row_number()+1,],yearReturn))

因此它向子函数发送一个data.frame。

© www.soinside.com 2019 - 2024. All rights reserved.