R中的NAND运算符

时间:2016-02-03 20:21:48

标签: r operators

是否有适当的' R中的NAND运算符,例如

abline(h = 0, lty = 3)
abline(v = 0, lty = 3)

或者它只是最佳实践/唯一的可能性

nand(condition1, condition 2)

还有哪些其他选择?

1 个答案:

答案 0 :(得分:5)

为了解决这个问题,R中没有内置的diffKeys = set(a.keys()) - set(b.keys()) c = dict() for key in diffKeys: c[key] = a.get(key) 函数,我能想到改进你的nand的唯一方法就是将这个操作转换为编译语言,例如

!(x & y)

这是否值得麻烦可能取决于您需要拨打#include <Rcpp.h> // [[Rcpp::export]] Rcpp::LogicalVector nand(Rcpp::LogicalVector lhs, Rcpp::LogicalVector rhs) { R_xlen_t i = 0, n = lhs.size(); Rcpp::LogicalVector result(n); for ( ; i < n; i++) { result[i] = !(lhs[i] && rhs[i]); } return result; } /*** R Lhs <- rbinom(10e4, 1, .5) Rhs <- rbinom(10e4, 1, .5) r_nand <- function(x, y) !(x & y) all.equal(nand(Lhs, Rhs), r_nand(Lhs, Rhs)) #[1] TRUE microbenchmark::microbenchmark( nand(Lhs, Rhs), r_nand(Lhs, Rhs), times = 200L) #Unit: microseconds # expr min lq mean median uq max neval # nand(Lhs, Rhs) 716.140 749.926 1215.353 771.015 1856.734 6332.284 200 #r_nand(Lhs, Rhs) 3337.494 3397.809 5106.614 3461.845 4985.807 95226.834 200 */ 的频率。出于大多数目的,上述nand应该足够了。实际上,r_nand的实现方式类似:

base::xor