gpt4 book ai didi

r - 子集向量 : how to programatically pass negative index safely?

转载 作者:行者123 更新时间:2023-12-04 23:15:51 27 4
gpt4 key购买 nike

给定一个向量,比如 v = 1:10 , 可以从 v 中删除元素使用负索引,例如v[-1] , v[-length(v)] , v[-c(2,3)] , 分别删除第一个、最后一个和第二/第三个元素。

我要拆分v通过传入拆分索引 n ,取值 0 到 length(v) .下面的代码:

v1 <- v[1:n]
v2 <- v[-c(1:n)]

除了 n = 0 之外,工作正常.现在我知道 1:n通常不安全,应替换为 seq_len(n) ,然而,分配 v2 <- v[-seq_len(0)]产生一个空向量。

有没有办法使用括号子集符号“安全地”做到这一点?否则我知道如何使用头部和尾部来做到这一点:
v1 <- head(v, n)
v2 <- tail(v, length(v) - n)

相关的其他问题:

Complement of empty index vector is empty index vector

最佳答案

您可以使用 if()括号内的语句。例如,如果 n,这将只返回整个向量为零并删除序列 1:n除此以外。

x <- 1:10

n <- 0
x[ if(n == 0) TRUE else -seq_len(n) ] ## n == 0 is !n for the golfers
# [1] 1 2 3 4 5 6 7 8 9 10

n <- 5
x[ if(n == 0) TRUE else -seq_len(n) ]
# [1] 6 7 8 9 10

关于r - 子集向量 : how to programatically pass negative index safely?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42615728/

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