编写函数以计算向量的前k个元素的平方

问题描述 投票:0回答:1

我正在尝试计算向量k的前v个元素的平方。

如果k大于向量n的长度,则设置k = n

myfun1 = function(v,k){ 
   p = ifelse(k > length(v), k = length(v), v[1:k]^2)
   return(p)
}

myfun1(v=seq(1,20,by=0.5), k=10)

当我运行代码时,它给了我这个错误:

ifelse(k> length(v),k = length(v),v [1:k] ^ 2)中的错误:未使用的参数(k = length(v))

任何人都可以帮助解决此问题吗?

r
1个回答
3
投票

k = length(v)内部的[ifelse]没有意义。这是一种更简单的方法-

myfun1 <- function(v, k) {
  v[1:min(k, length(v))]^2
}

myfun1(1:10, 5)
[1]  1  4  9 16 25

myfun1(1:10, 15)
[1]   1   4   9  16  25  36  49  64  81 100

感谢@josliber,这是另一种简单的方法-

myfun1 <- function(v, k) {
  head(v, k)^2
}
© www.soinside.com 2019 - 2024. All rights reserved.