gpt4 book ai didi

r - 更改运算符(operator)默认行为

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

R 的默认行为的设计决策针对交互式使用进行了微调,但可能会导致在没有太多用户监督的情况下运行的大型代码库中出现不希望的行为。我有兴趣找到使语言更严格的方法。我有两个基本的例子。

(回收)非全等向量在算术运算中被回收:

> x=1:10
> y=1:20
> y=rep(1,20)
> x+y
[1] 2 3 4 5 6 7 8 9 10 11 2 3 4 5 6 7 8 9 10 11

有没有办法让这个操作导致错误?

(转换)更新向量时会发生转换,有时会更改被更新元素的类型,有时会更改向量的类型:
> x[1] <- 'a'
> x
[1] "a" "2" "3" "4" "5" "6" "7" "8" "9" "10"
> x[1] <- 1
> x
[1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10"

有没有办法让这个操作导致错误?

我相信新用户和中级用户的大部分挫败感源于这样的行为(这反过来又会导致对语言的总结判断!)。任何指向解决回收和转换的一般方法的指针都非常受欢迎。

最佳答案

对于加法。大卫说得对。在合理的代码上,我在函数的入口处或至少在最后检查此类事情:

    require(testthat)
expect_equal(length(out), length (mainEntry))

转换也是一个非常敏感的问题。在重要的代码中,我在赋值中指定了类型:
    X[1] <- as.numeric("a")

会发出警告。
您甚至可以使用 S4 classes 定义阻止转换的类。 .

不幸的是,对于初学者来说,这可能不太容易理解,但是初学者应该处理关键代码吗?

关于r - 更改运算符(operator)默认行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29009795/

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