将字符转换为变量名
Converting characters into variable names
exec_parties2
是一个包含以下12个变量的数据框:
"CE""DB""ES""FC""FF""HF""HR""JE""JF" "JR" "SE" "SR"
我想创建一个对每个变量进行排名的循环
这是第一个变量的工作示例:
exec_parties2<-exec_parties2 %>% mutate(CE_T=eval(dense_rank(CE)))
我正在尝试这样的事情:
r<-colnames(exec_parties2)
i=1
for(i in r){
exec_parties3<-exec_parties2 %>% mutate(eval(r[i])=dense_rank(desc(r[i])))
}
显然,它不起作用
我知道这是可行的,应该在某处记录下来。我只是找不到它。这类似于SAS(编写代码的程序)中的宏。
对于这个愚蠢的问题深表歉意,非常感谢您的帮助。
在当前的 for
循环中,我们可以在 mutate
中进行赋值 (:=
),方法是在将字符串列名称转换为符号时评估 (!!
) (sym
) 并评估 (!!
)
r <- colnames(exec_parties2)
for(nm in r) {
exec_parties2 <- exec_parties2 %>%
mutate(!! nm := dense_rank(desc(!! rlang::sym(nm))))
}
注意:如评论中所述,使用 mutate_at
可以轻松完成此操作
exec_parties2
是一个包含以下12个变量的数据框:
"CE""DB""ES""FC""FF""HF""HR""JE""JF" "JR" "SE" "SR"
我想创建一个对每个变量进行排名的循环
这是第一个变量的工作示例:
exec_parties2<-exec_parties2 %>% mutate(CE_T=eval(dense_rank(CE)))
我正在尝试这样的事情:
r<-colnames(exec_parties2)
i=1
for(i in r){
exec_parties3<-exec_parties2 %>% mutate(eval(r[i])=dense_rank(desc(r[i])))
}
显然,它不起作用
我知道这是可行的,应该在某处记录下来。我只是找不到它。这类似于SAS(编写代码的程序)中的宏。
对于这个愚蠢的问题深表歉意,非常感谢您的帮助。
在当前的 for
循环中,我们可以在 mutate
中进行赋值 (:=
),方法是在将字符串列名称转换为符号时评估 (!!
) (sym
) 并评估 (!!
)
r <- colnames(exec_parties2)
for(nm in r) {
exec_parties2 <- exec_parties2 %>%
mutate(!! nm := dense_rank(desc(!! rlang::sym(nm))))
}
注意:如评论中所述,使用 mutate_at