从一个函数计算多列并将其添加到data.frame

用户名

我想从一个函数的列中返回多个结果data.frame,并将这些新列data.frame与其他简单计算一起添加到同一列中

举一个简化的例子,如果我想同时获得积分值和sin函数的绝对误差以及积分间隔的中点:

df <- data.frame(Lower = c(1,2,3), Upper = c(2,3,4))
setDT(df)
getIntegral <- function(l, u) {
  n <- integrate(sin, mean(l), mean(u))
  list(Value=n$value, Error=n$abs.error)
}
df[,
   c('Value', 'Error', 'Mid') := {
     n <- getIntegral(Lower, Upper)
     list(n$Value,
          n$Error,
          (Lower+Upper)/2)
   }]
df
   Lower Upper     Value        Error Mid
1:     1     2 0.5738457 6.370967e-15 1.5
2:     2     3 0.5738457 6.370967e-15 2.5
3:     3     4 0.5738457 6.370967e-15 3.5

我不太喜欢我的方法,因为将新列的名称和分配给它们的值分隔开使我难以阅读,如何才能更好地完成此任务?它是长数据处理链的一部分,因此我不想在外部创建temp变量,因此我更喜欢使用data.tabledplyr单独使用的解决方案

阿伦

RHS应该是一个值列表,并且列表中的每个元素都将转换为一列(并在必要时回收)。

您的函数已经返回了list(每个长度为1)并(Lower+Upper)/2返回了3个值的向量(此处)。为了返回列表,可以使用c()如下功能

df[, c('Value', 'Error', 'Mid') := c(getIntegral(Lower, Upper), list((Lower+Upper)/2))]
#    Lower Upper     Value        Error Mid
# 1:     1     2 0.5738457 6.370967e-15 1.5
# 2:     2     3 0.5738457 6.370967e-15 2.5
# 3:     3     4 0.5738457 6.370967e-15 3.5

这利用了c(list, list)导致串联列表的事实

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

通过匹配变量将值从一个data.frame添加到另一个data.frame

将 data.frame 中的值添加到匹配两个条件的另一个 data.frame 中的新列

从一维data.frame中删除行并将其保留为data.frame

R-如何将一个空的POSIXct列添加到已经存在的data.frame / tibble中?

将X列数添加到data.frame

在R函数中自动将列添加到data.frame

如何创建一个函数,从一个 QTreeWidget 中删除一个项目并将其添加到另一个?

应用使用多列作为参数的函数,函数返回一个data.frame

如何一次性将多个列添加到data.frame中?

将行添加到data.frame中,但仅添加到某些列中

根据索引将列从一个 data.frame 复制到另一个

通过一个键获取多键字典的总和并将其添加到Python中的datfarme列中?

Spotfire-从一个表中获取介于另一个表中两个日期之间的数据,并将其添加到计算出的列中

将onmouseover工具提示添加到R html表(基于另一个data.frame中的单元格)?

使用R将来自两个data.frame的数据相乘并将其平均为一列

是否可以定义一个“函数”并将其插入到“公式”中以在 R 中构建一个“model.frame”?

jsonlite正在使用类data.frame的列创建一个data.frame

在R中的data.frame列表中使用一个data.frame的指定列

如何制作一个可以让我制作元素并将其添加到数组的函数?

如何编写一个接受参数并将其添加到数组的函数?

将新列添加到 Deedle Frame

创建一个函数来执行计算并将答案作为列添加到现有数据框

R将列添加到data.frame中,即data.frames列表中

从一个数据集中的表中计数,并将其添加到不同数据集中表中的一列

按特定列过滤一个data.frame和另一个data.frame

使用else if逻辑将条件列添加到Pandas Data Frame-Python

将文件名作为列添加到循环内的data.frame中

通过R中的循环将新列添加到data.frame

R:将列添加到 data.frame 以分为低、中、高范围