立即与mutate合作,我想询问为什么会这样,以及如何解决这个问题。
目前我正在创建一个包含8行的数据框:
modelOption_RT <- data.frame(
typeID = rep(1:2, each = 4),
ID = 1:8,
modelOption = c("good", "avg", "bad", "marginCost",
"year1Premium")[c(1:5, 1:3)],
descrip = c("Favorable", "Average", "Adverse", "Margin Cost",
"Year 1 Premium")[c(1:5, 1:3)],
vals = sort(round(runif(8, min=0, max=1), digits = 2), decreasing = FALSE)[c(1:5,1:3)]) %>%
mutate(vals = replace(vals, modelOption == "year1Premium",
runif(1, min=0, max=10000)),
modelOption_RT %>% mutate(Losses = ifelse(typeID == 2 & modelOption != "year1Premium",
vals*10000000, vals))
)
一旦我运行它,我得到:
Error in mutate_impl(.data, dots) :
Column `modelOption_RT %>% mutate(Losses = ifelse(typeID == 2 & modelOption !=
"year1Premium", vals * 10000000, vals))` must be length 8 (the number of rows) or one, not 6
使用mutate的最后一行不应该生成6行,它应该生成8.所有最后一行所做的是将条件值乘以一个数字,并保留其他值以使它不采用值离开 - 这就是为什么我对长度不同的原因感到困惑。
当我单独运行数据框函数之外的最后一个mutate行时,它就可以正常工作了。但是把它放在像我这样的函数中,它给了我一个长度问题。这是为什么?