使用 for 循环进行带有操作的 mutate 函数 - dplyr/R

问题描述 投票:0回答:1

我对 R 有点陌生,但我了解如何使用普通 R 和 dplyr 包的基本功能的基础知识。然而,我试图使用

for
循环在数据框中创建新列,我正在努力开发新的变量进行分析,但我发现这样做有很多问题。

这个想法很简单:我有几个与政党对几个政治问题的重视程度相关的变量,我想为每个问题创建变量,同时考虑政党收到的选票份额(以便确定大约有多少投票权)投票份额与 x 方强调 i 的问题有关)

因此,新列将应用以下操作:i_emphasis * pervote

我编写的代码源自我在 Stack 中检查的另一个响应,因为我的前几次尝试进展得很糟糕,但我仍然看不到发生了什么。这是目前的代码:

vars <- c(y2016_ESP$per101:y2016_ESP$per706)

y2016_ESP %>% 
  for (i_var in vars){
      i_emphasis <- paste0("supp_i_",i_var)
  
      mod_y2016_ESP <- y2016_ESP %>%
        mutate(!!sym(i_emphasis) := i_var*pervote)
  }

i_var
是包含所有“问题重点”列的向量,它应该迭代,并且它似乎是给出问题的向量。我不明白为什么,因为
c()
应该获取每一列并将其包含在向量中(至少,我认为它应该这样做)。提前致谢!! :)

注意:对于当前的代码,我只是将其应用于简化的数据帧,因为我想测试它并首先描述性地检查这个小 df,然后将其普遍应用于更广泛的数据帧。我看到其他一些人使用函数

apply()
lapply()
来做类似的事情,但我更熟悉编程语言中典型的
for
循环。

r for-loop dplyr
1个回答
0
投票

如果你真的想循环变量名,你可以使用基本 R 而不是 dplyr

for (var in list_var) {
df[[var]] # do your thing
}
© www.soinside.com 2019 - 2024. All rights reserved.