我正在尝试查找所有小于输入数字平方根的数字。
我编写了一个函数,该函数将在输入一个数字时执行此操作。我有一个数字序列,希望对其进行评估。
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
如果有道理。 然后,我希望能够提取上述数组的某些值。
如果有人可以提供帮助,那就太好了!
答案 0 :(得分:0)
使用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")
。