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

应用中的is.numeric和is.numeric选项显示不同的结果,r,R,我有一个数据集,其中包含约200个字段和1000000条记录,格式如下: Acc Field1 Field2 Field3 ..... 101 23 34 78 102 6 1.2 89 . . . 当我输入命令时 apply(dat3[varlist[9]],2,is.numeric) 我得到了字段名的确认,结果为TRUE,但当我尝试按原样测试.numericdat3[varlist[9]]时,结果为FALSE 其中dat3是我正在处理的数据

我有一个数据集,其中包含约200个字段和1000000条记录,格式如下:

Acc Field1 Field2 Field3 .....    
101   23   34   78    
102   6    1.2  89    
.
.
.
当我输入命令时

apply(dat3[varlist[9]],2,is.numeric)
我得到了字段名的确认,结果为TRUE,但当我尝试按原样测试.numericdat3[varlist[9]]时,结果为FALSE

其中dat3是我正在处理的数据帧,varlist是使用以下命令创建的:

varlist <- names(dat3) 
varlist包含数据框中的所有变量列表

附件是实时屏幕截图

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

感谢任何人的帮助

以这种方式在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] TRUE
如果你这样做

varlist <- names(iris)
iris[varlist[1]]

请下次再做一个可重复的例子,在数据框上逐列执行测试的标准方法是使用sapply


尝试为类交换is.numeric。

iris[varlist[1]]和iris[,colnamesiris%[1]]在%varlist[1]]中是非常不正确的索引。只需使用iris[,1]或iris[[1]]。没问题。您可以使用iris和mtcars等数据集,这些数据集已经在R或其他版本中可用。运行数据以查看可用数据集的列表。还可以查看@Richie I know,但我只想从他的方法开始,以显示差异。
iris[,colnames(iris) %in% varlist[1]]
is.numeric( iris[,colnames(iris) %in% varlist[1]])
#[1] TRUE
sapply(mtcars, is.numeric)
sapply(CO2, is.numeric)