gpt4 book ai didi

r - 是否有一种优雅的内置方法可以在 R 中进行模索引?

转载 作者:行者123 更新时间:2023-12-04 11:33:51 28 4
gpt4 key购买 nike

目前,我有

extract_modulo = function(x, n, fn=`[`) fn(x, (n-1L) %% length(x) + 1L)
`%[mod%` = function (x, n) extract_modulo(x, n)

进而:
seq(12) %[mod% 14
#[1] 2

这是否已经内置在 R 中?我会这么认为,因为 R 有几个函数可以回收值(例如, paste )。但是,我在 help('[[') 上没有找到任何东西, ??index , 或 ??mod .我认为 R 表示法类似于 seq(12)[/14/]as.list(seq(12))[[/14/]] , 例如。

最佳答案

rep_len()是快速.Internal函数,适用于此用途或在您自己的函数中回收参数时。对于这种特殊情况,您要查找超出向量长度的索引位置处的值,rep_len(x, n)[n]对于任何非负整数 'n' 和任何非 NULL,将始终执行您要查找的操作x .

rep_len(seq(12), 14)[14]
# [1] 2
rep_len(letters, 125)[125]
# [1] "u"

如果事实证明您不需要回收 x ,它与 n 一样好用小于 length(x) 的值
rep_len(seq(12), 5)[5]
# [1] 5
rep_len(seq(12), 0)[0]
# integer(0)
# as would be expected, there is nothing there

如果您愿意,您当然可以创建一个包装器:
recycle_index <- function(x, n) rep_len(x, n)[n]
recycle_index(seq(12), 14)
# [1] 2

关于r - 是否有一种优雅的内置方法可以在 R 中进行模索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46965758/

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