【发布时间】:2018-12-20 13:53:19
【问题描述】:
我有以下数据框(很抱歉没有提供带有 dput 的示例,当我将其粘贴到列表时,它似乎不适用于列表):
现在我正在尝试为ref_amount 的每个元素创建一个新列y 来获取mnt_ope 和ref_amount 之间的差异。结果将是,在每一行中,一个列表的元素数量与ref_amount 的对应值相同。
我试过了:
data <- data %>%
mutate( y = mnt_ope - ref_amount)
但我得到了错误:
Evaluation error: non-numeric argument to binary operator.
dput:
structure(list(mnt_ope = c(500, 500, 771.07, 770.26, 770.26,
770.26, 770.72, 770.72, 770.72, 770.72, 770.72, 779.95, 779.95,
779.95, 779.95, 2502.34, 810.89, 810.89, 810.89, 810.89, 810.89
), ref_amount = list(c(500, 500), c(500, 500), c(771.07, 770.26,
770.26), c(771.07, 770.26, 770.26), c(771.07, 770.26, 770.26),
c(771.07, 770.26, 770.26), c(771.07, 770.26, 770.26), c(771.07,
770.26, 770.26), c(771.07, 770.26, 770.26), c(771.07, 770.26,
770.26), c(771.07, 770.26, 770.26), c(771.07, 770.26, 770.26
), c(771.07, 770.26, 770.26), c(771.07, 770.26, 770.26),
c(771.07, 770.26, 770.26), 2502.34, c(810.89, 810.89, 810.89
), c(810.89, 810.89, 810.89), c(810.89, 810.89, 810.89),
c(810.89, 810.89, 810.89), c(810.89, 810.89, 810.89))), row.names = c(NA,
-21L), class = c("tbl_df", "tbl", "data.frame"))
【问题讨论】:
-
请使用
dput显示数据集。是否为list列 -
@jogo 抱歉,这是
ref_amount不是diff_amount@akrun 很抱歉,但我似乎无法使用 dput。它不会在文本编辑器中以正确的格式粘贴。是的,这是一个list专栏。 -
我猜你需要在
mutate中使用类似purrr::map/purrr::pmap的东西。 -
@akrun 对不起,我的错,我做了必要的编辑。