如何使用 R 的 `:` 运算符来解决我的问题?

发布于 2024-11-30 08:13:33 字数 330 浏览 0 评论 0原文

R 的 : 运算符有一些众所周知的陷阱:

a = c(1, 2, 3)
set.zero = function(n) a[1:n] <<- 0
set.zero(0)
# `a` is now c(0, 2, 3)

我可以编写一个函数,通过使 1:0 给出一个空来解决这个问题 向量,但如果有一个相当简洁的 base 或 CRAN,我更喜欢它 提供此类功能的包(如果不太适合的话,最好替换 : 危险的)。我试图寻找一个但找不到。

这样的事存在吗?

R's : operator has some well-known gotchas:

a = c(1, 2, 3)
set.zero = function(n) a[1:n] <<- 0
set.zero(0)
# `a` is now c(0, 2, 3)

I could just write a function that solves this by making 1:0 give an empty
vector, but I'd prefer it if there were a reasonably terse base or CRAN
package that provided such a function (ideally replacing : if that's not too
dangerous). I've tried to search for one but can't find it.

Does such a thing exist?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

你的往事 2024-12-07 08:13:33

试试这个:

set.zero = function(n) a[seq_len(n)] <<- 0

请注意,seq(1, length = n) 也可以工作。

Try this:

set.zero = function(n) a[seq_len(n)] <<- 0

Note that seq(1, length = n) works as well.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文