我正在尝试计算向量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))
任何人都可以解决这个问题吗?
答案 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
}