gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 23:14:50 24 4
gpt4 key购买 nike

在下面显示的函数中,没有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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com