将附加的数据帧传递给函数

尼克CHK

我正在研究一个函数,它将有关特定变量的信息与有关它来自的数据框的一些基本信息相结合。这是我正在谈论的一个例子:

fcn <- function(var,data) {
  return(ncol(data)*mean(var))
}

df <- data.frame(a=1:10,b=1:10)

df %>% dplyr::mutate(c=fcn(a,df))

这工作正常!但是,如果在函数与动词一起使用with或在dplyr动词内部使用的情况下,我可以直接获取数据框/tibble 对象而不显式传递它,那将是非常简洁的所以理想情况下像

fcn <- function(var,data=attached_data_object) {
  return(ncol(data)*mean(var))
}

df <- data.frame(a=1:10,b=1:10)

df %>% dplyr::mutate(c=fcn(a))

我一直在阅读各种环境功能 - 似乎我应该能够进入 with/dplyr 从数据帧创建的环境,然后将整个内容全部取出。到目前为止,我一直无法弄清楚如何实现这一点。任何提示表示赞赏!谢谢你。

G医生

(如果我的条款略有错误,向哈德利道歉)。您可能会发现Advanced R 中有关环境和 NSE(非标准评估)的章节很有用。

在 dplyr 动词(例如 mutate)中,被操作的数据帧/tibble 称为“.”。因此“。” 在此处的另一个答案中引用数据框。dplyr 动词自动在“.”中查找。对于指定的列名。当您从 mutate() 中调用函数时,正如您在此处所做的那样,您希望访问名为“.”的对象。存在于函数的执行环境中。那么我们该怎么做呢?

fcn <- function(var) {
  dat <- get(".", env=parent.frame())
  return(ncol(dat) * mean(var))
}

notacol <- 8
df <- data.frame(a=1:10, b=seq(10, 100, 10))
df
    a   b
1   1  10
2   2  20
3   3  30
4   4  40
5   5  50
6   6  60
7   7  70
8   8  80
9   9  90
10 10 100


df %>% mutate(c = fcn(a), d = fcn(b), e = fcn(notacol))
    a   b  c   d  e
1   1  10 11 110 16
2   2  20 11 110 16
3   3  30 11 110 16
4   4  40 11 110 16
5   5  50 11 110 16
6   6  60 11 110 16
7   7  70 11 110 16
8   8  80 11 110 16
9   9  90 11 110 16
10 10 100 11 110 16

我认为这就是你所追求的行为。请注意,notacol在执行环境中找不到它,因为它不在数据框中,但 Global Env 位于搜索路径上,因此可以在那里找到。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

js将附加参数传递给函数

来自分类Dev

将附加的apram传递给$ watch函数

来自分类Dev

将附加属性传递给函数绑定

来自分类Dev

将数据帧传递给线程

来自分类Dev

将额外的数据传递给函数

来自分类Dev

将附加参数传递给两个函数

来自分类Dev

将附加变量传递给内部调用的回调函数

来自分类Dev

python pandas:将数据帧传递给df.apply

来自分类Dev

python pandas:将数据帧传递给df.apply

来自分类Dev

使用R中的Apply系列将2列数据帧的每一行传递给我创建的函数?

来自分类Dev

如何将数据帧切片传递给直方图函数以在 R 中进行模式归一化?

来自分类Dev

将分组数据框传递给dplyr中的函数

来自分类Dev

将函数传递给group_by()之后的数据

来自分类Dev

JavaScript-将数据传递给匿名函数

来自分类Dev

将数据框传递给函数,保留原始列属性

来自分类Dev

无法将数据传递给函数(jQuery)

来自分类Dev

在单元测试时将数据变量传递给函数

来自分类Dev

将函数传递给数据框中的列-Python

来自分类Dev

将数据类型作为参数传递给函数

来自分类Dev

将参数作为数据结构传递给Python函数

来自分类Dev

将数据从POST API请求传递给lambda函数

来自分类Dev

将数据传递给lodash map()函数-功能组件

来自分类Dev

将数据框的列传递给内部函数

来自分类Dev

将每个数据从多个numpy传递给函数

来自分类Dev

将多个表单数据传递给jquery函数

来自分类Dev

OpenCV:无法正确将数据传递给函数

来自分类Dev

坚持如何将数据传递给函数

来自分类Dev

将文件数据传递给函数

来自分类Dev

将已解析的重复数据传递给函数

Related 相关文章

热门标签

归档