Kay*_*Kay 5 r function vector subset sequence
当我们想要 R 中的序列时,我们可以使用以下任一结构:
> 1:5
[1] 1 2 3 4 5
> seq(1,5)
[1] 1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)
这会产生从开始到停止(包括)的序列有没有办法生成从开始到停止(不包括)的序列?喜欢
[1] 1 2 3 4
Run Code Online (Sandbox Code Playgroud)
另外,我不想使用像减号运算符这样的解决方法,例如:
seq(1,5-1)
Run Code Online (Sandbox Code Playgroud)
这是因为我希望代码中的语句优雅而简洁。在我的现实世界示例中,start和stop不是硬编码整数,而是描述性变量名称。使用这个variable_name -1结构只是我的脚本更丑陋并且难以让审阅者阅读。
PS:这个问题与删除向量的最后一个元素的问题之间的区别在于,我要求生成序列,而前者侧重于删除向量的最后一个元素此外,这里提供的答案是不同的并且与我的问题相关
我们可以使用下面的函数
f <- function(start, stop, ...) {
if(identical(start, stop)) {
return(vector("integer", 0))
}
seq.int(from = start, to = stop - 1L, ...)
}
Run Code Online (Sandbox Code Playgroud)
测试
f(1, 5)
# [1] 1 2 3 4
f(1, 1)
# integer(0)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
782 次 |
| 最近记录: |