r - 当用户定义的 R 函数不返回值时,为什么会发生这种情况?

标签 r dplyr r-plotly

在下面显示的函数中,没有return。但是,执行之后,我可以确认这个值正常进入了d

没有返回。在这方面的任何建议将不胜感激。

代码

#installed plotly, dplyr
accumulate_by <- function(dat, var) {
  var <- lazyeval::f_eval(var, dat)
  lvls <- plotly:::getLevels(var)
  dats <- lapply(seq_along(lvls), function(x) {
  cbind(dat[var %in% lvls[seq(1, x)], ], frame = lvls[[x]])
  })
dplyr::bind_rows(dats)
}


d <- txhousing %>%
  filter(year > 2005, city %in% c("Abilene", "Bay Area")) %>%
  accumulate_by(~date)

最佳答案

在函数中,最后一个赋值是创建“dats”,它通过 bind_rows(dats) 返回我们不需要显式的 return 语句。假设,如果有两个对象要返回,我们可以把它放在一个list


在某些语言中,例如 python,为了提高内存效率,使用 generatorsyield 而不是在内存中创建整个输出,即考虑python

中的两个函数
def get_square(n):
    result = []
    for x in range(n):
        result.append(x**2)
return result

当我们运行它时

get_square(4)
#[0, 1, 4, 9]

同样的功能可以写成一个generator。而不是返回任何东西,

def get_square(n):
    for x in range(n):
        yield(x**2)

运行函数

get_square(4) 
#<generator object get_square at 0x0000015240C2F9E8> 

通过使用 list 进行转换,我们得到相同的输出

list(get_square(4))
#[0, 1, 4, 9]

关于r - 当用户定义的 R 函数不返回值时,为什么会发生这种情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49399414/

相关文章:

r - 无法在 R 中的光栅堆栈上执行中位数()

r - 嵌套列表 "addition"

使用plotlyProxy按名称删除跟踪(或在 react 性上下文中访问输出模式)

r - 在 R Plotly 中使用曲面椭圆绘制 Ellipse3d

r - 如何循环遍历r中的字符串列表

r - 如何将 SpatialPolygons 添加到 R 中的气泡图

r - 使用 dplyr 进行探索性绘图

R dplyr - 同一列,获取数据帧以下两行的总和

r - 如何在R中使用plotly添加R^2?

r - 有没有一种简单的方法可以计算基于多个点的线性回归斜率?