我有我定义一个函数data.frame
,我使用循环来填充数据。 在某些时候,我得到的警告信息:
警告消息:1:在[<-.factor
( *tmp*
,ISEQ,值= “CHANGE”):无效因子的水平,所产生的NA
因此,当我定义我data.frame,我想设置的选项stringsAsFactors
到FALSE
,但我不知道如何做到这一点。
我试过了:
DataFrame = data.frame(stringsAsFactors=FALSE)
并且:
options(stringsAsFactors=FALSE)
什么是设置选项stringsAsFactors正确的方法是什么?
这取决于你如何填写您的数据帧,您已没有给出任何代码。 当你创建一个新的数据帧,你可以做这样的:
x <- data.frame(aName = aVector, bName = bVector, stringsAsFactors = FALSE)
在这种情况下, 如果例如aVector
是字符向量,那么数据帧列x$aName
将是一个字符向量为好,而不是一个因子矢量。 组合,与现有的数据帧(用rbind
, cbind
或类似)应保持该模式。
当您执行
options(stringsAsFactors = FALSE)
您更改全局默认设置。 所以,你执行该行后创建的每个数据帧将不自动转换为因素,除非明确告知这样做。 如果你只需要避免在一个地方的转换,那么我宁愿不要更改默认。 然而,如果这会影响你的代码中的许多地方,改变默认的似乎是一个不错的主意。
还有一两件事:如果你的载体已经包含的因素,则两个以上的将其改回成一个字符向量。 要做到这一点,你应该明确地将其转换回使用as.character
或相似。