1

我有一个包含数值变量和因子的数据框。

将数据从一个数据帧移动到另一个数据帧时,一切都按我的意愿保存:

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 档案的搜索主要返回关于故意将因素更改为变量的结果,并且对我没有多大帮助。略显笨拙的标题是为了将我的问题与那些问题区分开来。

4

1 回答 1

1

?cbind表示cbind如果所有输入都是向量(在您的情况下是向量),则返回一个矩阵。一个矩阵只能包含一个原子类型(字符、数字、逻辑等)。因子不是原子类型,因此它们会被转换。

“数据框方法”部分说cbinddata.frame 方法只是 wraps 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))
于 2012-08-02T16:08:27.177 回答