我很惊讶地发现R没有附带一个方便的函数来检查数字是否为整数.
is.integer(66) # FALSE
Run Code Online (Sandbox Code Playgroud)
在帮助文件警告:
is.integer(x)不测试是否x包含整数!为此,请使用round,如is.wholenumber(x)示例中的函数 .
该示例将此自定义函数作为"解决方法"
is.wholenumber <- function(x, tol = .Machine$double.eps^0.5) abs(x - round(x)) < tol
is.wholenumber(1) # is TRUE
Run Code Online (Sandbox Code Playgroud)
如果我必须编写一个函数来检查整数,假设我没有阅读上面的注释,我会编写一个函数,它会像
check.integer <- function(x) {
x == round(x)
}
Run Code Online (Sandbox Code Playgroud)
我的方法会在哪里失败?如果你穿着我的假想鞋,你的工作会是什么?
我有一个关于从R中的向量中选择特定值的问题.更具体地说,我想从我的数据集中的给定变量中选择所有整数值(我想使用它们来对我的数据进行子集化).这是一个例子:
x <- seq(0,10,1/3)
Run Code Online (Sandbox Code Playgroud)
现在我想用整数来选择向量x中的所有观测值.我的第一个想法是使用is.integer命令,但这不起作用.我找到了使用以下方法的解决方案:
> x==as.integer(x)
[1] TRUE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE TRUE FALSE
FALSE TRUE FALSE FALSE TRUE
[17] FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE TRUE FALSE
FALSE TRUE FALSE FALSE TRUE
Run Code Online (Sandbox Code Playgroud)
现在我可以简单地输入
> which(x==as.integer(x))
[1] 1 4 7 10 13 16 19 22 25 28 31
Run Code Online (Sandbox Code Playgroud)
我得到了预期的结果(我可以使用这个向量来对我的数据集进行子集化).但是没有更直接的方法来选择整数值吗?