相关疑难解决方法(0)

检查数字是否为整数

我很惊讶地发现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)

我的方法会在哪里失败?如果你穿着我的假想鞋,你的工作会是什么?

integer r rounding

92
推荐指数
7
解决办法
11万
查看次数

仅从矢量中选择整数

我有一个关于从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)

我得到了预期的结果(我可以使用这个向量来对我的数据集进行子集化).但是没有更直接的方法来选择整数值吗?

r

4
推荐指数
2
解决办法
3571
查看次数

标签 统计

r ×2

integer ×1

rounding ×1