我有数字,整数和字符串的数据框。我想检查哪些列是整数,我做
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'功能的是什么?
答案 0 :(得分:3)
默认情况下,R会将所有数字存储为双精度浮点数,即numeric
。三个有用的函数class
,typeof
和storage.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
。其中包括round
,floor
,ceiling
和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