R-访问在函数参数中作为字符串传递的数据框列名称

用户名

数据如下

text = "
date,a,b
12/2/2019,18.1,0.017741935
12/2/2019,18.2,0.020967742
12/9/2019,16.7,0.020322581
12/9/2019,16.9,0.019677419
12/3/2019,18.1,0.017741935
12/3/2019,18.8,0.020967742
12/10/2019,16.2,0.020322581
12/10/2019,16.1,0.019677419
"
df1 = read.table(textConnection(text), sep=",", header = T)

需要在多个相似的数据帧上运行相似的操作,但是具有不同的列名,因此该函数很有意义。该函数使用dplyrggplot如下绘制两个变量的散点图

dplyrGgFn = function(df, colNameX, colNameY) {

  # get average Y value for each x value point to be used
  df = df %>%
    select(colNameX, colNameY) %>%
    mutate(colNameX = round(colNameX,0)) %>%
    group_by(colNameX) %>%
    summarise(colNameY = mean(colNameY))

  # 
  return(
    ggplot(df, aes_string(x=colNameX, y=colNameY)) + 
      geom_point(aes(color = "blue"))
  )

}

然后打电话 dplyrGgFn(df1, "a", "b")

显然,此函数会引发错误,并且您可能会看到问题在于访问在函数调用中作为字符串传递的列名变量。

Error in round(colNameX, 0) : 
  non-numeric argument to mathematical function 

建议使用什么方法来处理作为列名参数传递的字符串?寻找通用答案,因为它可能适用于多种情况。

更新:

@Onyambu用户评论以非功能版本作为起点-并添加了该功能。

df1 = df1 %>%
    select(a, b) %>%
    mutate(a = round(a,0)) %>%
    group_by(a) %>%
    summarise(b = mean(b))

ggplot(df1, aes(x=a, y=b)) + 
  geom_point(aes(color = "blue"))
罗纳克·沙

查看您的代码尚不清楚您要执行的操作,但是如果您想在函数中传递带引号的值,这可能会有所帮助。

library(dplyr)
library(rlang)
library(ggplot2)

dplyrGgFn = function(df, colNameX, colNameY) {
    x_col <- sym(colNameX)
    y_col <- sym(colNameY)
    df %>%
      group_by(!!x_col) %>%
      summarise(colNameY = mean(!!y_col)) %>%
      ggplot() + aes(!!x_col, y= !!y_col) + geom_point()
}

dplyrGgFn(df1, "a", "b")

请注意,aes_string已弃用该方法,symaes(color = "blue")不是执行您期望的操作。


要传递未加引号的变量,请使用{{}}

dplyrGgFn = function(df, colNameX, colNameY) {
  df %>%
    group_by({{colNameX}}) %>%
    summarise(colNameY = mean({{colNameY}})) %>%
    ggplot() + aes({{colNameX}}, y= {{colNameY}}) + geom_point()
}

dplyrGgFn(df1, a, b)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将字符串参数传递给函数作为dplyr中的数据框列名称

来自分类Dev

R +数据框名称作为字符串变量

来自分类Dev

在 R 中:如何从字符串加上列名加上分类变量创建数据框名称?

来自分类Dev

将串联字符串作为R中的函数参数传递

来自分类Dev

如何将字符串作为参数传递给需要R中的变量的函数

来自分类Dev

传递字符串中的错误作为列名R t测试

来自分类Dev

将字符串传递给R函数并将其用作函数中的列名

来自分类Dev

检查作为R函数中的参数传递的函数的名称

来自分类Dev

检查在R函数中作为参数传递的函数的名称

来自分类Dev

R,将分组的列作为字符串传递以汇总函数参数

来自分类Dev

来自字符串的引用R数据帧列名称

来自分类Dev

如何使用函数调用中的参数作为R中数据框的名称?

来自分类Dev

将字符串更改为名称以访问数据框 (R)

来自分类Dev

R:识别数据框中的列名是否包含字符串

来自分类Dev

如何在R中为数据框的列名加上字符串

来自分类Dev

在R中使用字符串作为函数参数

来自分类Dev

在R中编写函数时传递字符串/字符参数

来自分类Dev

在R中,如何修改给定字符串名称的列表中的数据框列

来自分类Dev

在R中的列中对齐数据框的字符串

来自分类Dev

在R中的列中对齐数据框的字符串

来自分类Dev

将列名作为参数传递给R函数

来自分类Dev

将列名作为函数参数传递-R

来自分类Dev

如何使用列名(字符串)作为输入在R函数内部制作ggplot2图?

来自分类Dev

将数据框作为函数参数传递,但在调用函数时将其名称用作字符串

来自分类Dev

在R中以字符串形式获取数据帧的名称

来自分类Dev

将字符串传递给R函数参数,但稍后用作另一个函数的参数名称

来自分类Dev

R-数据框中的条件子字符串

来自分类Dev

计算 R 数据框中特定字符串的数量

来自分类Dev

R 反转数据框中的字符串

Related 相关文章

  1. 1

    将字符串参数传递给函数作为dplyr中的数据框列名称

  2. 2

    R +数据框名称作为字符串变量

  3. 3

    在 R 中:如何从字符串加上列名加上分类变量创建数据框名称?

  4. 4

    将串联字符串作为R中的函数参数传递

  5. 5

    如何将字符串作为参数传递给需要R中的变量的函数

  6. 6

    传递字符串中的错误作为列名R t测试

  7. 7

    将字符串传递给R函数并将其用作函数中的列名

  8. 8

    检查作为R函数中的参数传递的函数的名称

  9. 9

    检查在R函数中作为参数传递的函数的名称

  10. 10

    R,将分组的列作为字符串传递以汇总函数参数

  11. 11

    来自字符串的引用R数据帧列名称

  12. 12

    如何使用函数调用中的参数作为R中数据框的名称?

  13. 13

    将字符串更改为名称以访问数据框 (R)

  14. 14

    R:识别数据框中的列名是否包含字符串

  15. 15

    如何在R中为数据框的列名加上字符串

  16. 16

    在R中使用字符串作为函数参数

  17. 17

    在R中编写函数时传递字符串/字符参数

  18. 18

    在R中,如何修改给定字符串名称的列表中的数据框列

  19. 19

    在R中的列中对齐数据框的字符串

  20. 20

    在R中的列中对齐数据框的字符串

  21. 21

    将列名作为参数传递给R函数

  22. 22

    将列名作为函数参数传递-R

  23. 23

    如何使用列名(字符串)作为输入在R函数内部制作ggplot2图?

  24. 24

    将数据框作为函数参数传递,但在调用函数时将其名称用作字符串

  25. 25

    在R中以字符串形式获取数据帧的名称

  26. 26

    将字符串传递给R函数参数,但稍后用作另一个函数的参数名称

  27. 27

    R-数据框中的条件子字符串

  28. 28

    计算 R 数据框中特定字符串的数量

  29. 29

    R 反转数据框中的字符串

热门标签

归档