我在尝试创建一个包含R中的循环的函数时遇到了一些麻烦。循环工作正常但是当我把它放在函数体内时它不会再写任何输出了。
所以给出我的数据:
df1<-data.frame(a=sample(1:50,10),b=sample(1:50,10),c=sample(1:50,10))
我创建了一个向量来存储我的结果和一个带有某个函数的循环
result <- vector("list",10)
for (i in 1:10)
{
result[[i]] <- df1*i
}
当我尝试创建这样的函数时
# 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”中没有数据。所以我认为语法中存在一些基本问题。任何人都可以帮助我吗?
答案 0 :(得分:5)
您的函数不会返回它创建的列表。您需要添加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
}
顺便说一下:可以使用lapply
:
myfun <- function(x, a = 1, b) {
lapply(seq(a, b), "*", x)
}