R 如何从一个范围生成序列
我试图从range的输出中,从一个range生成一个序列R 如何从一个范围生成序列,r,R,我试图从range的输出中,从一个range生成一个序列 > range(wines$quality) [1] 3 8 > seq(3, 8) [1] 3 4 5 6 7 8 > seq(range(wines$quality)) [1] 1 2 但是我试着把范围3,8的输出放到seq中,得到3,4,5,6,7,8的列表,为什么给我一个带12的列表?如何让它按照我想要的方式运行?我确信有一种更奇特的方式可以做到这一点,但为什么不只是: x <- range(win
> range(wines$quality)
[1] 3 8
> seq(3, 8)
[1] 3 4 5 6 7 8
> seq(range(wines$quality))
[1] 1 2
但是我试着把范围3,8的输出放到seq中,得到3,4,5,6,7,8的列表,为什么给我一个带12的列表?如何让它按照我想要的方式运行?我确信有一种更奇特的方式可以做到这一点,但为什么不只是:
x <- range(wine$quality)
seq(x[1], x[2])
x一些可能的解决方案,尽管eval
parse
更像是在胡闹:
set.seed(10)
x <- rpois(20, 10)
y <- range(x); y[1]:y[2]
seq(y[1], y[2])
eval(parse(text = paste(range(x), collapse=":")))
## > y <- range(x); y[1]:y[2]
## [1] 5 6 7 8 9 10 11 12 13 14 15
## > seq(y[1], y[2])
## [1] 5 6 7 8 9 10 11 12 13 14 15
## > eval(parse(text = paste(range(x), collapse=":")))
## [1] 5 6 7 8 9 10 11 12 13 14 15
set.seed(10)
x eval(解析(text=paste(范围(x),collapse=“:”))
## [1] 5 6 7 8 9 10 11 12 13 14 15
另一个选项:
do.call(seq, as.list(range(wines$quality)))
# [1] 3 4 5 6 7 8
现在的问题是,当seq
需要两个单元素参数以实现所需功能时,您正在将一个双元素向量作为一个参数传递
do.call
callsseq
,将as.list…
中的每一项作为参数。Nice我最喜欢这一行+1如果将vector或data.frame x作为一个参数传递给seq,它将创建一个序列1:length(x)