从R中的函数返回结果
我在尝试创建一个在R中包含循环的函数时遇到了一些麻烦。循环工作正常,但当我将其放入函数体中时,它将不再写入任何输出 因此,根据我的数据:从R中的函数返回结果,r,function,loops,syntax,R,Function,Loops,Syntax,我在尝试创建一个在R中包含循环的函数时遇到了一些麻烦。循环工作正常,但当我将其放入函数体中时,它将不再写入任何输出 因此,根据我的数据: df1<-data.frame(a=sample(1:50,10),b=sample(1:50,10),c=sample(1:50,10)) df1函数不会返回它创建的列表。您需要添加一个return命令: result2 <- vector("list",10) loop.function<- function(x,a,b)
df1<-data.frame(a=sample(1:50,10),b=sample(1:50,10),c=sample(1:50,10))
df1函数不会返回它创建的列表。您需要添加一个return
命令:
result2 <- vector("list",10)
loop.function<-
function(x,a,b){
for (i in a:b)
{
result2[[i]] <- x*i
}
return(result2) # added this row
}
一旦您担心性能,在输出对象周围放置result()
可能会使您的代码更快一些。就我的两分钱。这比你想象的还要简单:as.list(x*a:b)
。它们对于标量参数是一样的。对于向量x
,x%o%a:b
是一个很好的选择。对于这个有趣的问题+1!经典的初学者陷阱!
# make the loop a function
result2 <- vector("list",10)
loop.function<-
function(x,a,b){
for (i in a:b)
{
result2[[i]] <- x*i
}
}
loop.function(df1,1,10)
result2 <- vector("list",10)
loop.function<-
function(x,a,b){
for (i in a:b)
{
result2[[i]] <- x*i
}
return(result2) # added this row
}
myfun <- function(x, a = 1, b) {
lapply(seq(a, b), "*", x)
}