Vin*_*ntH 27 default r options dataframe r-factor
我有一个函数,我在其中定义一个data.frame
我使用循环来填充数据.在某些时候,我收到警告消息:
警告消息:1:In
[<-.factor
(*tmp*
,iseq,value ="CHANGE"):生成的因子级别无效
因此,当我定义我的data.frame时,我想将选项设置stringsAsFactors
为FALSE
但我不明白该怎么做.
我试过了:
DataFrame = data.frame(stringsAsFactors=FALSE)
Run Code Online (Sandbox Code Playgroud)
并且:
options(stringsAsFactors=FALSE)
Run Code Online (Sandbox Code Playgroud)
设置stringsAsFactors选项的正确方法是什么?
MvG*_*MvG 38
这取决于您填写数据框的方式,您没有提供任何代码.构造新数据框时,可以这样做:
x <- data.frame(aName = aVector, bName = bVector, stringsAsFactors = FALSE)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如果例如aVector
是字符向量,则数据帧列x$aName
也将是字符向量,而不是因子向量.组合,与现有的数据帧(用rbind
,cbind
或类似的)应保持该模式.
当你执行
options(stringsAsFactors = FALSE)
Run Code Online (Sandbox Code Playgroud)
您更改全局默认设置.因此,在执行该行之后创建的每个数据框都不会自动转换为因子,除非明确告知这样做.如果您只需要在一个地方避免转换,那么我宁愿不更改默认值.但是,如果这会影响代码中的许多位置,则更改默认值似乎是一个好主意.
还有一件事:如果你的向量已经包含因子,那么上述两个都不会将它改回一个字符向量.为此,您应该使用as.character
或类似地显式转换回来.