我有一个数据集,其中包含大约200个字段和1000000的记录,如下所示:
Acc Field1 Field2 Field3 .....
101 23 34 78
102 6 1.2 89
.
.
.当我进入命令
apply(dat3[varlist[9]],2,is.numeric)我得到了结果为TRUE的字段名的确认,但是当我尝试作为is.numeric(dat3[varlist[9]])进行测试时,结果会收到一个FALSE。
其中,dat3是我正在处理的数据格式,而varlist是使用命令创建的:
varlist <- names(dat3) varlist包含数据帧中的所有变量列表。
附件是实时截图。
我不明白我在这里做错了什么。
任何来自任何人的帮助都将受到感谢。

发布于 2013-10-22 10:34:40
如果你这样做了
varlist <- names(iris)
iris[varlist[1]]您正在使用所选列而不是变量本身定义一个新的dataframe。
做
iris[,colnames(iris) %in% varlist[1]]
is.numeric( iris[,colnames(iris) %in% varlist[1]])
#[1] TRUE下一次试着做一个可复制的例子
发布于 2013-10-22 10:36:54
在数据帧上逐列执行测试的标准方法是使用sapply。
sapply(mtcars, is.numeric)
sapply(CO2, is.numeric)(也尝试将is.numeric替换为class。)
发布于 2013-10-22 10:33:34
以这种方式在[上使用data.frame将返回另一个(较小的数据帧)。您需要使用[[,或者使用[的多索引版本,以便应用删除。例如:
class(mtcars[3])
[1] "data.frame"
is.numeric(mtcars[3])
[1] FALSE
is.numeric(mtcars[[3]])
[1] TRUE
is.numeric(mtcars[,3])
[1] TRUEhttps://stackoverflow.com/questions/19514911
复制相似问题