【发布时间】:2019-12-18 15:12:35
【问题描述】:
为一些单独工作的计算创建了一个函数。
但是,当我在mutate() 中使用它时,它似乎将列中的所有值作为输入并以警告消息结束:In 1:yrs : numerical expression has 6 elements: only the first used
library(dplyr)
mortgage <- function(amt = 800000, yrs = 25, mthly = 3630, ints = 0.026) {
yearPay <- mthly * 12
paid <- 0
remain <- amt
for(i in 1:yrs) {
paid = paid + yearPay
remain = (amt - paid) * (1 + ints)
}
return(remain*-1)
}
tibble(loanAmt = c(800000, 800000, 800000, 700000, 700000, 700000),
period = c(15,20,25,15,20,25),
monthly = c(5373, 4279, 3630, 4701, 3744, 3176),
interest = 0.026) %>%
mutate(credit = mortgage(loanAmt, period, monthly, interest))
我正在尝试使用每行中的数据运行函数mortgage(),但 mutate() 似乎将 period 中的所有值作为向量放入参数中。
谁能告诉我我可能做错了什么?
【问题讨论】:
-
第一个警告是向量上的
as_tibble。可以直接使用tibble -
这是一个警告,而不是错误。实际上,您确实获得了一列信用值;如果这是一个错误,情况就不会如此。但不清楚你期望得到什么——看起来你分配的参数不是你想要的顺序。你给参数
yrs提供了一个长度为6 的向量,那么for(i in 1:yrs)没有意义,这就是警告的来源 -
@akrun 谢谢你的建议,我改变了它,但警告仍然存在并且没有按照我的预期工作。
-
@camille 确实警告没有按预期工作。我想做的是运行
mortgage()每一行每一列的哪些数据。对于第一行来说很好,因为它使用的是第一个元素。然而,在第二行,我希望它能够运行mortgage(800000, 20, 4279, 0.026)。第三行应该是mortgage(800000, 25,3630,0.026)等等...
标签: r for-loop iteration dplyr