我正在尝试将一个函数应用于矩阵,但是我知道我有"未使用的参数"在
应用功能。我不知道我要添加什么来使apply函数工作。它说
我需要定义n,y或z值,它们在little.fun
中。没有详细说明这是问题的功能:
MyFun = function (a,b) {
mm=t(matrix(a,ncol=b-1))
apply(mm, FUN=little.fun, MARGIN=1)
return(mm)
}
我需要做些什么来完成这项工作?
谢谢!
编辑:
有问题的功能:
little.fun <- function(x,n) {
if (x==1) return(0)
y <- c(0,1)
while (length(y) < x)
{
position <- length(y)
new <- y[position] + y[position-1]
y <- c(y,new) }
if(length(seq(n))>length(seq(y)))
{
z = (rep(y,x,length.out=n))
}else{
tail(y,n)
}
if((!tail(y,1) %in% tail(z,1))) warning("Recycling is not full!")
return(z)
}
答案 0 :(得分:0)
这会让你更接近,但还有其他问题。您永远不会在z
行中little.function
分配tail(y,n)
:little.fun <- function(x,n) {
if (x==1) return(0)
y <- c(0,1)
while (length(y) < x)
{
position <- length(y)
new <- y[position] + y[position-1]
y <- c(y,new) }
if(length(seq(n))>length(seq(y)))
{
z = (rep(y,x,length.out=n))
}else{
z <- tail(y,n)
}
if((!tail(y,1) %in% tail(z,1))) warning("Recycling is not full!")
return(z)
}
MyFun = function (a, b, n) {
mm=t(matrix(a,ncol=b-1))
mm <- apply(mm, FUN=little.fun, n=n, MARGIN=1)
return(mm)
}
MyFun(a=c(10,20,30), b = 4, n=4)
## [,1] [,2] [,3]
## [1,] 8 987 121393
## [2,] 13 1597 196418
## [3,] 21 2584 317811
## [4,] 34 4181 514229
。
{{1}}