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

时间:2019-02-04 03:25:57

标签: r

我正在尝试计算向量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))

任何人都可以解决这个问题吗?

1 个答案:

答案 0 :(得分: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
}