You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在dplyr中通过变量存储的列名与另一列相乘后排序数据框?

解决dplyr中用变量存储列名时按两列乘积排序的问题

你遇到的问题是因为直接使用!!my_var时,只是把字符串"a"代入表达式,相当于执行"a" * b,字符串和数值相乘自然会报“非数值参数”的错误。这里提供两种可行的解决方法:

方法1:使用.data代词(dplyr推荐方式)

.data是dplyr提供的代词,用来引用数据框中的列,通过[[ ]]可以直接用字符型变量指定列名:

library(dplyr)
my_var <- 'a'
data.frame(a=1:10, b=seq(20,1,-2)) %>% arrange(.data[[my_var]] * b)

方法2:将字符列名转为符号再解引用

先用sym()把字符型变量转换成符号类型,再用!!解引用为列:

library(dplyr)
my_var <- 'a'
data.frame(a=1:10, b=seq(20,1,-2)) %>% arrange(!!sym(my_var) * b)

两种方法都能正确实现按a*b的结果对数据框排序的需求。

内容的提问来源于stack exchange,提问作者drmariod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 23:59:49