R中具有聚合功能的用户定义函数

先生369

我正在尝试编写R自定义函数。但是我对于这部分还比较陌生,因此我一直在努力解决以下问题。

  1. 我想在Price == Number和Price!= Number的情况下对数据进行子集化,但是当我运行该函数时,得到的表具有4列和0变量。

  2. 当我想在列之间进行聚合时,我写的内容也是错误的。

我的资料

Name1   Name2   Price   Number
  A       F      6        6
  A       D      5        5
  A       E      2        2
  B       F      4        9
  B       D      7        8
  C       F      4        4
  C       E      2        6

我的功能

MyFun  <- function(Master_Table, Desired_ColumnA, Desired_ColumnB){

  Table1 <- Master_Table[(Desired_ColumnA== Desired_ColumnB)]
  Table2 <- Master_Table[!(Desired_ColumnA== Desired_ColumnB)]

  Table2$NewCol  = abs(Table2$Desired_ColumnA - Table2$Desired_ColumnB)

  return(Table1)
  return(Table2)

}

测试

MyTest <- MyFun(Data, Price, Number)

预期产量

表格1:

Name1   Name2   Price   Number
  A       F      6        6
  A       D      5        5
  A       E      2        2
  C       F      4        4

表2:

    Name1   Name2   Price   Number   New
      B       F      4        9       5
      B       D      7        8       1
      C       E      2        6       4

这将是我整个工作的第一步。如果有人对此有所了解,请告诉我,我们将不胜感激!

莫里斯·埃弗斯(Maurits Evers)

您的代码存在一些问题。

  1. 一个函数不能有多个return语句。如果您想返回多个对象,建议您将它们放在中,list然后返回list

  2. 您的子集/过滤不正确。您要根据涉及两列中值的特定条件来过滤请注意我的子命令中的逗号。

  3. 您需要将列名称作为字符向量传递。

这个怎么样?

f <- function(df, col1, col2) {

    # Subset data
    df1 <- df[df[col1] == df[col2], ];
    df2 <- df[df[col1] != df[col2], ];

    # Calculate NewCol
    df2["NewCol"] <- abs(df2[col1] - df2[col2]);

    # Return data.frames as list
    return(lst(df1, df2));
}
f(df, "Price", "Number");
#$df1
#  Name1 Name2 Price Number
#1     A     F     6      6
#2     A     D     5      5
#3     A     E     2      2
#6     C     F     4      4
#
#$df2
#  Name1 Name2 Price Number NewCol
#4     B     F     4      9      5
#5     B     D     7      8      1
#7     C     E     2      6      4

样本数据

df <- read.table(text =
    "Name1   Name2   Price   Number
  A       F      6        6
  A       D      5        5
  A       E      2        2
  B       F      4        9
  B       D      7        8
  C       F      4        4
  C       E      2        6", header = T)

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

具有数据表聚合的用户定义函数

Virtuoso中的用户定义的SPARQL聚合函数

用户定义的函数,在nodejs中具有回调

使用用户定义的功能在R中聚合数据

具有自动完成功能中的用户定义功能的Bash脚本

用户定义的功能和DolphinDB中的流聚合器

mariadb用户定义的聚合函数

用户定义的函数在R中没有响应

在pyspark中应用用户定义的聚合函数的替代方法

在Apache Derby中创建用户定义的聚合函数

Dask数据框中的多个聚合用户定义函数

如何在Java中实现Oracle用户定义的聚合函数

Julia中具有破坏性功能的用户定义类型的并行化

如何在VBA / Excel中的用户定义函数中具有多个可选参数

R dplyr:分组依据,不具有聚合函数

具有用户定义功能的VBA数据验证

具有用户定义功能的C ++ Math Parser

用户在r中的函数中定义的变量

Chapel中的用户定义函数具有奇怪的行为.type与.eltType

用户定义的函数,在pandas中具有任意数量的分组变量

如何在R数据框中聚合具有两个不同功能的两个不同列

dplyr中的R用户定义函数摘要

在Python中访问R用户定义的函数

新环境中的R用户定义函数

R中用户定义函数中的lme

具有自定义功能的C ++向量构造函数

具有%dopar%的Foreach无法检测到用户定义函数内的用户定义函数

类引用成员 - 不是具有合成构造函数的类中的错误,而是用户定义的构造函数中的错误

使用用户定义的函数聚合 df