让我们假设以下向量:
prices <- c(10, 15, 20, 30)
以及以下 Dataframe :
df <- data.frame(count = c(1, 3, 2, 4))
我想做的是,根据df
中的count
值,从价格向量中取1:count
值,并在我的数据框中求和。
所以我想我可以做:
library(tidyverse)
df |>
mutate(sum = sum(!!prices[1:count]))
但是,这会产生一个错误:
Error in quos(..., .ignore_empty = "all") :
object 'count' not found
我猜这是因为它查看外部向量,然后在全局环境中搜索count
,然而,它只存在于df中。
所以问题是,我如何将这个外部向量馈送到我的数据框架中,通过count
值引用其元素?
预期产出将是:
count sum
1 1 10
2 3 45
3 2 25
4 4 75
3条答案
按热度按时间wgeznvg71#
您可以在
count
的帮助下子集prices
,然后使用cumsum
。根据你对其他答案的评论,如果数据框有可能有一个名为
prices
的列,那么这将不起作用。在这种情况下,指定.GlobalEnv
从全局环境中显式使用prices
。jvlzgdj92#
关于
sapply
必要时使用.GlobalEnv$
:ffdz8vbo3#
您可以将
df
Package 在rowwise()
中输出: