按顺序省略最后一个元素

标签 r function vector subset sequence

当我们想要 R 中的序列时,我们使用任一构造:

> 1:5
[1] 1 2 3 4 5
> seq(1,5)
[1] 1 2 3 4 5
这会产生一个从开始到停止的序列(包括)
有没有办法生成从开始到停止(独占)的序列?喜欢
[1] 1 2 3 4 
另外,我不想使用减号运算符之类的解决方法,例如:
seq(1,5-1)
这是因为我希望在我的代码中使用优雅简洁的语句。在我的真实世界示例中,startstop不是硬编码的整数,而是描述性的变量名称。使用 variable_name -1构建只是我的脚本丑陋,难以为审阅者阅读。
PS:这个问题和remove the last element of a vector的问题的区别是我要求序列生成,而前者专注于删除向量的最后一个元素
此外,此处提供的答案不同且与我的问题相关

最佳答案

一种可能的解决方案是

head(1:5, -1)
# [1] 1 2 3 4
或者你可以定义自己的函数
seq_last_exclusive <- function(x) return(x[-length(x)])
seq_last_exclusive(1:5)
# [1] 1 2 3 4

关于按顺序省略最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62834133/

相关文章:

Mysql 查询在 workbench 中运行良好,但在 r 中花费的时间太长

reshape R 中的数据(宽 -> 长)

javascript - 如何正确使用document.getElementById()?

c++ - 指向带有模板参数的函数的指针

R提取字符串中的重复单词

r - 如何将分钟数据转换为小时平均数据

javascript - Javascript 中的无序函数参数

c++ - 使用 std::find_if 将迭代器传递给一元谓词

c++ - 当 vector 需要更多内存并分配内存时,指针会发生什么变化?

c++ - 用空格拆分字符串但只得到第一个字