Напишите функцию для вычисления квадрата первых k элементов вектора - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь вычислить квадрат первых 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 голосов
/ 04 февраля 2019

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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...