使用一个函数和一个参数生成两个序列
Generating two sequences with one function and one parameter
我想生成这两个序列:
A = c(0.25,0.50,0.75,1,0.25,0.50,0.75,0.25,0.50,0.25)
B = c(0.33,0.66,1,0.33,0.66,0.33)
只有一个功能。
我已经有了这个:
X = 5
X = 4
rep(seq(1/(X-1),1,1/(X-1)), X-1)
但是,我仍然需要删除一些值,
我是这样做的,但这并不是真正正确的方法:
rep(seq(1/(X-1),1,1/(X-1)), X-1)[-c(8,11,12,14,15,16)]
rep(seq(1/(X-1),1,1/(X-1)), X-1)[-c(6,8,9)]
有没有办法在一个函数中写这个?
一种方法是 sequence(x:1)/x
,其中 x
取所需的值。
> f = function(x) sequence(x:1)/x
> f(4)
# [1] 0.25 0.50 0.75 1.00 0.25 0.50 0.75 0.25 0.50 0.25
> f(3)
# [1] 0.3333333 0.6666667 1.0000000 0.3333333 0.6666667 0.3333333
(假设 sequence
算作一个函数,即我们不包括 :
和 /
等)
的 sequence
方法已经是一个超级优雅的选择。下面是另一个,但不是那么简洁
f <- function(x) unlist(sapply(x:1, seq)) / x
这样
> f(3)
[1] 0.3333333 0.6666667 1.0000000 0.3333333 0.6666667 0.3333333
> f(4)
[1] 0.25 0.50 0.75 1.00 0.25 0.50 0.75 0.25 0.50 0.25
我想生成这两个序列:
A = c(0.25,0.50,0.75,1,0.25,0.50,0.75,0.25,0.50,0.25)
B = c(0.33,0.66,1,0.33,0.66,0.33)
只有一个功能。 我已经有了这个:
X = 5
X = 4
rep(seq(1/(X-1),1,1/(X-1)), X-1)
但是,我仍然需要删除一些值, 我是这样做的,但这并不是真正正确的方法:
rep(seq(1/(X-1),1,1/(X-1)), X-1)[-c(8,11,12,14,15,16)]
rep(seq(1/(X-1),1,1/(X-1)), X-1)[-c(6,8,9)]
有没有办法在一个函数中写这个?
一种方法是 sequence(x:1)/x
,其中 x
取所需的值。
> f = function(x) sequence(x:1)/x
> f(4)
# [1] 0.25 0.50 0.75 1.00 0.25 0.50 0.75 0.25 0.50 0.25
> f(3)
# [1] 0.3333333 0.6666667 1.0000000 0.3333333 0.6666667 0.3333333
(假设 sequence
算作一个函数,即我们不包括 :
和 /
等)
sequence
方法已经是一个超级优雅的选择。下面是另一个,但不是那么简洁
f <- function(x) unlist(sapply(x:1, seq)) / x
这样
> f(3)
[1] 0.3333333 0.6666667 1.0000000 0.3333333 0.6666667 0.3333333
> f(4)
[1] 0.25 0.50 0.75 1.00 0.25 0.50 0.75 0.25 0.50 0.25