[英]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)
和一個快速的谷歌后,我認為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"
列類。 所有列似乎都是整數或數字,因此首先將列轉換為數字:
demo_c[] <- lapply(demo_c, as.numeric)
sqldf("select seqn from demo_c")
如果您願意,可以將整數1轉換為整數:
isInt <- sapply(demo_c, inherits, "integer")
demo_c[isInt] <- lapply(demo_c[isInt], as.integer)
demo_c[!isInt] <- lapply(demo_c[!isInt], as.numeric)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.