R sqldf - match.fun(asfn) 'c("as.labelled", "as.integer")' 不是函数、字符或符号
R sqldf - match.fun(asfn) 'c("as.labelled", "as.integer")' is not a function, character or symbol
R 的新手,刚刚玩了几个小时,我想我会玩一些 NHANES 数据集,例如ftp://ftp.cdc.gov/pub/Health_Statistics/NCHS/nhanes/2003-2004/
所以抓住了几个,在玩了 merge(bmx_c, demo_c)
和快速 Google 之后,我认为 sqldf
库将是合并/提取几列的更有效方法从文件中取出来玩,但我遇到了问题。
Error in match.fun(asfn) :
'c("as.labelled", "as.integer")' is not a function, character or symbol**
NHANES 文件是 SAS 格式,所以我必须:
install.packages("Hmisc")
install.packages("sqldf")
library(Hmisc)
library(sqldf)
demo_c <- sasxport.get("DEMO_C.XPT")
bmx_c <- sasxport.get("BMX_C.XPT")
is.data.frame(demo_c)
[1] TRUE
sqldf("select seqn from demo_c")
Error in match.fun(asfn) :
'c("as.labelled", "as.integer")' is not a function, character or symbol
>
summary(demo_c$seqn)
Min. 1st Qu. Median Mean 3rd Qu. Max.
21000 23540 26070 26070 28600 31130
>
我猜想需要进行某种类型转换,但我不知道 R 的精妙之处。
sqldf 不支持 Hmisc 生成的 "labelled"
列 class。所有列似乎都是整数或数字,因此首先将列转换为数字:
demo_c[] <- lapply(demo_c, as.numeric)
sqldf("select seqn from demo_c")
如果您愿意,可以将整数转换为整数:
isInt <- sapply(demo_c, inherits, "integer")
demo_c[isInt] <- lapply(demo_c[isInt], as.integer)
demo_c[!isInt] <- lapply(demo_c[!isInt], as.numeric)
R 的新手,刚刚玩了几个小时,我想我会玩一些 NHANES 数据集,例如ftp://ftp.cdc.gov/pub/Health_Statistics/NCHS/nhanes/2003-2004/
所以抓住了几个,在玩了 merge(bmx_c, demo_c)
和快速 Google 之后,我认为 sqldf
库将是合并/提取几列的更有效方法从文件中取出来玩,但我遇到了问题。
Error in match.fun(asfn) :
'c("as.labelled", "as.integer")' is not a function, character or symbol**
NHANES 文件是 SAS 格式,所以我必须:
install.packages("Hmisc")
install.packages("sqldf")
library(Hmisc)
library(sqldf)
demo_c <- sasxport.get("DEMO_C.XPT")
bmx_c <- sasxport.get("BMX_C.XPT")
is.data.frame(demo_c)
[1] TRUE
sqldf("select seqn from demo_c")
Error in match.fun(asfn) :
'c("as.labelled", "as.integer")' is not a function, character or symbol
>
summary(demo_c$seqn)
Min. 1st Qu. Median Mean 3rd Qu. Max.
21000 23540 26070 26070 28600 31130
>
我猜想需要进行某种类型转换,但我不知道 R 的精妙之处。
sqldf 不支持 Hmisc 生成的 "labelled"
列 class。所有列似乎都是整数或数字,因此首先将列转换为数字:
demo_c[] <- lapply(demo_c, as.numeric)
sqldf("select seqn from demo_c")
如果您愿意,可以将整数转换为整数:
isInt <- sapply(demo_c, inherits, "integer")
demo_c[isInt] <- lapply(demo_c[isInt], as.integer)
demo_c[!isInt] <- lapply(demo_c[!isInt], as.numeric)