【发布时间】:2021-10-27 05:24:53
【问题描述】:
我正在尝试在一个函数中为我的数据集中的每一行生成序列行。我遇到的问题是seq 函数出错,因为我有多行。我已经包含了一个示例数据集和我的代码(序列调用是我函数底部的第三个)。
df<-data.frame(
'Acct'=c("A","B","A"),
'Rate'=c(8,8,12),
'Amount'=c(1000,1000,1500),
'Freq'=c(2,2,2),
'MtM'=c(6,6,12),
'YtM2'=c(.10,.10,.05),
'periods'=c(12,12,24),
'Price'=c(911.54,911.54,1050.37),
'Date'=c('Sep 2021','Sep 2021', 'May 2021')
)
dur <- function(Rate, periods,YtM2, Price ,MtM,Amount) {
i <- 1:periods
cf <- c(rep(Rate, periods - 1), Amount + Rate)
pv <- (cf / (1 + YtM2) ^ i)
weight<-pv/Price
seqi<-seq(MtM/periods,MtM,length.out=periods)
endResults<-sum(seqi*weight)
return(seqi)
}
dur(df$Rate,df$periods,df$YtM2,df$Price,df$MtM,df$Amount)
当我运行代码时出现错误:
Error in seq.default(MtM/periods, MtM, length.out = periods) :
'from' must be of length 1
理想情况下,我会暂时存储这些序列。我正在尝试使用dplyr::group_by 语句进行实验,其中我按Acct 和Date 分组,然后生成序列,即seqi<-df%>%group_by(Acct,Date)%>%seq(MtM/df$periods,df$MtM, length.out=df$periods),但我只是收到此错误
Error in seq.default(., MtM/df$periods, df$MtM, length.out = df$periods) : 'from' must be of length 1 In addition: Warning message: In seq.default(., MtM/df$periods, df$MtM, length.out = df$periods) : first element used of 'length.out' argument
【问题讨论】:
标签: r