创建序列向量

时间:2019-04-04 17:56:45

标签: r

我正在尝试查找所有小于输入数字平方根的数字。

我编写了一个函数,该函数将在输入一个数字时执行此操作。我有一个数字序列,希望对其进行评估。

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 :(得分:0)

使用sequencesplit的选项。该函数返回一个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")