Создание вектора последовательностей - PullRequest
1 голос
/ 04 апреля 2019

Я пытаюсь найти все числа меньше квадратного корня из введенного числа.

Я написал функцию, которая будет делать это при вводе одного числа.У меня есть последовательность чисел, для которой я хочу оценить функцию.

x <- 1:1000
z <- x^2+1
findy <- function(z){
  y <<- seq(1, sqrt(z), 1)
}
n <- length(y)
for (i in 1:n) {
  a[i] <- z[i] - y[i]
}

Я хочу сделать следующее:

Начать с вектора z <- 1:1000

Создайте новый вектор: w <- z^2 + 1, затем для каждого числа в этом векторе оцените функцию выше.

Пример

z <- c(1, 2, 3, 4)
w <- c(2, 5, 10, 17)

(здесь сложно описать вывод)

y= 1

   1,2

   1,2,3

   1,2,3,4

Если это имеет смысл.Тогда я хотел бы иметь возможность извлечь определенные значения из вышеуказанного массива.

Если кто-то может помочь, это было бы удивительно!

1 Ответ

0 голосов
/ 04 апреля 2019

Опция, использующая sequence и split.Функция возвращает list.

f <- function(x) {
  w <- x^2 + 1                  # why do you need this line?
  out <- sequence(sqrt(w))      # same as sequence(x)
  split(out, cumsum(out == 1L))
}

out <- f(1:4)
out
#$`1`
#[1] 1
#
#$`2`
#[1] 1 2
#
#$`3`
#[1] 1 2 3
#
#$`4`
#[1] 1 2 3 4

Для извлечения векторов вы можете использовать $ или [[

out$`1` # output is a vector
[1] 1 

или

out[2:3] # output is a list
#$`2`
#[1] 1 2

#$`3`
#[1] 1 2 3

Подробнее см. help("Extract").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...