gpt4 book ai didi

r - R在位置分割数值向量

转载 作者:行者123 更新时间:2023-12-03 12:35:05 25 4
gpt4 key购买 nike

我想知道将 vector 按某个索引分为两个的简单任务:

splitAt <- function(x, pos){
list(x[1:pos-1], x[pos:length(x)])
}

a <- c(1, 2, 2, 3)

> splitAt(a, 4)
[[1]]
[1] 1 2 2

[[2]]
[1] 3

我的问题:为此必须有一些现有功能,但找不到吗? split可能吗?如果 pos=0pos>length(a),我的幼稚实现也不起作用。

最佳答案

一个改进将是:

splitAt <- function(x, pos) unname(split(x, cumsum(seq_along(x) %in% pos)))

现在可以采用位置 vector :
splitAt(a, c(2, 4))
# [[1]]
# [1] 1
#
# [[2]]
# [1] 2 2
#
# [[3]]
# [1] 3

而且,如果 pos <= 0pos >= length(x)确实在单个列表项中返回了整个原始 vector ,则它的行为确实(主观)。如果您想让它出错,请使用函数顶部的 stopifnot

关于r - R在位置分割数值向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16357962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com