is.integer众所周知,R不检查输入是否为整数。相反,它检查整数类型。它的文档表明,如果我们想检查某个东西是否是整数,我们应该使用:
is.wholenumber <- function(x, tol = .Machine$double.eps^0.5) abs(x - round(x)) < tol
Run Code Online (Sandbox Code Playgroud)
但不会
is.int<-function(numb) is.numeric(numb)&&as.integer(numb)==numb
Run Code Online (Sandbox Code Playgroud)
是一种更简洁的方法并且需要更少的参数?is.wholenumberover有is.int什么好处?
mtcars显然有行名称:
> head(mtcars)\n mpg cyl disp hp drat wt qsec vs am gear carb\nMazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4\nMazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4\nDatsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1\nHornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1\nHornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2\nValiant 18.1 6 …Run Code Online (Sandbox Code Playgroud) 在数据帧中,[可以使用单个字符执行索引。例如mtcars["mpg"]。
另一方面,在矩阵上尝试相同的结果,NA例如
m = cbind(A = 1:5, B = 1:5)
m["A"]
# NA
Run Code Online (Sandbox Code Playgroud)
...暗示这在某种程度上是一种无效的矩阵子集方法。
这是正常的 R 行为吗?如果有,记录在哪里?
SICP 练习 3.16为读者提供了一个计算列表结构中的对数的完整过程:
(define (count-pairs x)
(if (not (pair? x))
0
(+ (count-pairs (car x))
(count-pairs (cdr x))
1)))
Run Code Online (Sandbox Code Playgroud)
然后,它要求读者创建由三对组成的列表结构,使该过程返回:
任务#1 和#4 很简单;只需制作一个包含三个元素的普通列表并制作一个循环列表即可。然而,对于任务 #2 和 #4,我见过的每个解决方案似乎都通过创建超过三对来作弊。例如,Scheme Wiki给出了这些:
(define x '(foo))
(define y (cons x x))
(define str2 (list y))
(count-pairs str2) ; 4
(define x '(foo))
(define y (cons x x))
(define str3 (cons y y))
(count-pairs str3) ; 7
(define second (cons 'a 'b))
(define third (cons 'a 'b))
(define …Run Code Online (Sandbox Code Playgroud) 我正在 SQL Server 2019 上运行。每当我编写以下形式的查询时
SELECT *
FROM [Multi-Statement-Table-Valued-Function]
Run Code Online (Sandbox Code Playgroud)
执行计划显示它期望从此进程中获取 100 行。这是一致且有记录的模式吗?或者这只是我的服务器的一个怪癖?
我有一组关于 SQL Server 2014 基数估计的注释,我相信估计方法自 2014 年以来没有改变,但他们没有提到这个神奇的数字。
t-sql sql-server user-defined-functions sql-server-2019 cardinality-estimation
Clojure源代码给出了以下定义time
(defmacro time
"Evaluates expr and prints the time it took. Returns the value of
expr."
{:added "1.0"}
[expr]
`(let [start# (. System (nanoTime))
ret# ~expr]
(prn (str "Elapsed time: " (/ (double (- (. System (nanoTime)) start#)) 1000000.0) " msecs"))
ret#))
Run Code Online (Sandbox Code Playgroud)
为什么这需要一个宏?函数无法完成怎么办?
我原以为会有一个很容易找到的编程语言列表,按它们拥有的库数量排序。我一直找不到这样的东西。有没有办法找到或制作这样的列表?具体来说,前 5 名是什么?我知道这需要定义什么是图书馆,什么不是图书馆,但我很震惊地看到我什至找不到这样一个列表的尝试。