How.integer()在R中是如何工作的

时间:2016-05-16 16:13:39

标签: r

我有数字,整数和字符串的数据框。我想检查哪些列是整数,我做

raw<-read.csv('./rawcorpus.csv',head=F)
ints<-sapply(raw,is.integer)

无论如何这给了我所有的错误。所以我必须做一点改变

nums<-sapply(raw,is.numeric)
ints2<-sapply(raw[,nums],function(col){return(!(sum(col%%1)==0))})

第二种情况正常。我的问题是:实际检查'is.integer'功能的是什么?

2 个答案:

答案 0 :(得分:3)

默认情况下,R会将所有数字存储为双精度浮点数,即numeric。三个有用的函数classtypeofstorage.mode将告诉您如何存储值。尝试:

x <- 1
class(x)
typeof(x)
storage.mode(x)

如果您希望x为整数1,则应使用后缀&#34; L&#34;

x <- 1L
class(x)
typeof(x)
storage.mode(x)

或者,您可以通过以下方式将数字转换为整数:

x <- as.integer(1)
class(x)
typeof(x)
storage.mode(x)

is.integer函数检查存储模式是否为整数。比较

is.integer(1)
is.integer(1L)

您应该知道某些函数实际返回numeric,即使您希望它返回integer。其中包括roundfloorceiling和mod运算符%%

答案 1 :(得分:1)

来自R文档:

is.integer(x)不测试x是否包含整数!为此,请使用round,如示例中的函数is.wholenumber(x)。

所以在is.integer(x)中,x必须是一个向量,如果包含整数,你将得到真。在您的第一个示例中,参数是数字,而不是向量

希望有所帮助

来源:https://stat.ethz.ch/R-manual/R-devel/library/base/html/integer.html