首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >is.numeric和is.numeric选项在应用中显示不同的结果

is.numeric和is.numeric选项在应用中显示不同的结果
EN

Stack Overflow用户
提问于 2013-10-22 10:11:42
回答 3查看 145关注 0票数 0

我有一个数据集,其中包含大约200个字段和1000000的记录,如下所示:

代码语言:javascript
复制
Acc Field1 Field2 Field3 .....    
101   23   34   78    
102   6    1.2  89    
.
.
.

当我进入命令

代码语言:javascript
复制
apply(dat3[varlist[9]],2,is.numeric)

我得到了结果为TRUE的字段名的确认,但是当我尝试作为is.numeric(dat3[varlist[9]])进行测试时,结果会收到一个FALSE。

其中,dat3是我正在处理的数据格式,而varlist是使用命令创建的:

代码语言:javascript
复制
varlist <- names(dat3) 

varlist包含数据帧中的所有变量列表。

附件是实时截图。

我不明白我在这里做错了什么。

任何来自任何人的帮助都将受到感谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-22 10:34:40

如果你这样做了

代码语言:javascript
复制
varlist <- names(iris)
iris[varlist[1]]

您正在使用所选列而不是变量本身定义一个新的dataframe。

代码语言:javascript
复制
iris[,colnames(iris) %in% varlist[1]]
is.numeric( iris[,colnames(iris) %in% varlist[1]])
#[1] TRUE

下一次试着做一个可复制的例子

票数 1
EN

Stack Overflow用户

发布于 2013-10-22 10:36:54

在数据帧上逐列执行测试的标准方法是使用sapply

代码语言:javascript
复制
sapply(mtcars, is.numeric)
sapply(CO2, is.numeric)

(也尝试将is.numeric替换为class。)

票数 4
EN

Stack Overflow用户

发布于 2013-10-22 10:33:34

以这种方式在[上使用data.frame将返回另一个(较小的数据帧)。您需要使用[[,或者使用[的多索引版本,以便应用删除。例如:

代码语言:javascript
复制
class(mtcars[3])
[1] "data.frame"
is.numeric(mtcars[3])
[1] FALSE
is.numeric(mtcars[[3]])
[1] TRUE
is.numeric(mtcars[,3])
[1] TRUE
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19514911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档