我对 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 而不是 dplyr
for (var in list_var) {
df[[var]] # do your thing
}