首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将dataframe列类型设置为字符,而不是因数(默认)R

将dataframe列类型设置为字符,而不是因数(默认)R
EN

Stack Overflow用户
提问于 2018-05-25 18:33:23
回答 2查看 86关注 0票数 0
代码语言:javascript
复制
dataf <- data.frame(Alert=logical(),IQR=integer(),Kurtosis=integer(),Entropy=integer(),Skewness=integer(),Sex=character(),Complex=character(),Picos=integer(),PicosFil=integer(),Umbral=integer(),Gama=character(),stringsAsFactors=FALSE)
dataf <- rbind(dataf,list(Alert=FALSE,IQR=2.6938,Kurtosis=1.73447,Entropy=1.76160,Skewness=0.140613,Sex="Mujer",Complex="Slim",Picos=0,PicosFill=0,Umbral=15.708,Gama="Alta"))
dataf <- rbind(dataf,list(Alert=FALSE,IQR=0.179574,Kurtosis=19.0538,Entropy=0.74779,Skewness=1.1355,Sex="Mujer",Complex="Slim",Picos=1,PicosFill=1,Umbral=18.975,Gama="Media"))

我对Gama有一个问题,当我输入一个新值(字符串)时,我会得到以下错误:

警告消息:在[<-.factor(*tmp*,ri,value = "Media")中:无效因素级别,生成NA

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-25 18:46:44

您需要将stringsAsFactors=FALSE传递给您的列表。当您添加第一行时,可以看到df上的所有character列都变成了factor

代码语言:javascript
复制
dataf <- data.frame(Alert=logical(),IQR=integer(),Kurtosis=integer(),Entropy=integer(),Skewness=integer(),Sex=character(),Complex=character(),Picos=integer(),PicosFil=integer(),Umbral=integer(),Gama=character(),stringsAsFactors=FALSE)
dataf <- rbind(dataf,list(Alert=FALSE,IQR=2.6938,Kurtosis=1.73447,Entropy=1.76160,Skewness=0.140613,Sex="Mujer",Complex="Slim",Picos=0,PicosFill=0,Umbral=15.708,Gama="Alta"), stringsAsFactors=FALSE)
dataf <- rbind(dataf,list(Alert=FALSE,IQR=0.179574,Kurtosis=19.0538,Entropy=0.74779,Skewness=1.1355,Sex="Mujer",Complex="Slim",Picos=1,PicosFill=1,Umbral=18.975,Gama="Media"), stringsAsFactors=FALSE)
票数 0
EN

Stack Overflow用户

发布于 2018-05-25 18:58:03

您可以使用do.call来完成此操作。

代码语言:javascript
复制
lst <- list(
    list(Alert=FALSE,IQR=2.6938,Kurtosis=1.73447,Entropy=1.76160,Skewness=0.140613,Sex="Mujer",Complex="Slim",Picos=0,PicosFill=0,Umbral=15.708,Gama="Alta"),
    list(Alert=FALSE,IQR=0.179574,Kurtosis=19.0538,Entropy=0.74779,Skewness=1.1355,Sex="Mujer",Complex="Slim",Picos=1,PicosFill=1,Umbral=18.975,Gama="Media")
)
do.call(rbind.data.frame, lst)

注意,do.call(rbind, lst)将返回一个matrix,您需要显式调用data.frame方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50535036

复制
相关文章

相似问题

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