mutate_impl(.data,dots)出错:长度不同

时间:2018-02-01 16:18:38

标签: r

立即与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行时,它就可以正常工作了。但是把它放在像我这样的函数中,它给了我一个长度问题。这是为什么?

0 个答案:

没有答案