让我们假设以下向量:

prices <- c(10, 15, 20, 30)

和以下数据帧:

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

推荐答案

sapply美元.如有必要,请使用.GlobalEnv$:

df |>
  mutate(sum = sapply(count, \(x) sum(.GlobalEnv$prices[1:x])))

#   count sum
# 1     1  10
# 2     3  45
# 3     2  25
# 4     4  75

R相关问答推荐

将模拟变量乘以多个观测结果中的模拟变量

查找具有平局的多个列的最大值并返回列名或平局 destruct 者NA值

R Markdown中的交叉引用表

lightgbm发动机在tidymmodels中的L1正则化""

当我们有多个特殊字符时,使用gsub删除名称和代码'

将数字转换为分钟和秒

用关联字符串替换列名的元素

用约翰逊分布进行均值比较

使用`Watch()`和`renderUI()`时,不再满足仍出现在SHILINY AFTER条件中的条件输入

R-按最接近午夜的时间进行筛选

将选定的索引范围与阈值进行比较

具有重复元素的维恩图

如何将使用rhandsontable呈现的表值格式化为百分比,同时保留并显示完整的小数精度?

如何从向量构造一系列双边公式

使用ggplot2中的sec_axis()调整次轴

在R中的数据框上使用Apply()函数时,如何保留非数字列?

变长向量的矢量化和

填充图例什么时候会有点?

如何在Quarto中使用美人鱼图表中的标记来加粗文本

有没有办法更改ggplot2中第二个y轴的比例限制?