我有一个包含数字变量和因子的数据框。
将数据从一个数据帧移动到另一个数据帧时,一切都按照我的意愿保存:
copy_data<-as.data.frame(original_data)
这会创建一个'original_data'的副本,其中包含剩余因素。
当我尝试更复杂的版本时,最终结果是数值的数据框,当我希望因子仍然是因素时:
model_data<-with(subset(copy_data, copy_data$var1<0),
as.data.frame(cbind(var1, var2, var3, factor1, factor2, factor3)))
因此factor1,factor2和factor3都是数字而不是因素。我错过了什么?我尝试使用和不使用as.data.frame
并在填充之前将model_data定义为数据帧。
我对StackExchange归档文件的搜索主要是关于故意改变变量因素的结果,并且对我没什么帮助。略显笨重的标题是为了区分我的问题。
答案 0 :(得分:1)
?cbind
表示cbind
如果所有输入都是向量(它们在您的情况下),则返回矩阵。矩阵只能包含单个原子类型(字符,数字,逻辑等)。因素不是原子类型,因此它们会被转换。
“数据框架方法”部分说cbind
data.frame方法只包含data.frame(..., check.names=FALSE)
,因此您可以直接调用data.frame
(对cbind
的调用是冗余)。
model_data <- with(subset(copy_data, copy_data$var1<0),
data.frame(var1, var2, var3, factor1, factor2, factor3))