R 当存在相关因素时,使用向量创建矩阵

R 当存在相关因素时,使用向量创建矩阵,r,matrix,statistics,R,Matrix,Statistics,我几乎到了互联网的尽头,但我找不到我问题的(确切)答案 这可能很容易,但我只想从数据帧中选择一些变量,用它的一些向量形成一个矩阵。下面的示例中主要介绍了发生的情况: treatment <- factor(rep(c(1, 2), c(43, 41)), levels = c(1, 2), labels = c("placebo", "treated")) improved <- factor(rep(c(1, 2, 3, 1, 2, 3), c(29, 7, 7, 13,

我几乎到了互联网的尽头,但我找不到我问题的(确切)答案

这可能很容易,但我只想从数据帧中选择一些变量,用它的一些向量形成一个矩阵。下面的示例中主要介绍了发生的情况:

treatment <- factor(rep(c(1, 2), c(43, 41)), levels = c(1, 2),
    labels = c("placebo", "treated"))

improved <- factor(rep(c(1, 2, 3, 1, 2, 3), c(29, 7, 7, 13, 7, 21)),
    levels = c(1, 2, 3),
    labels = c("none", "some", "marked"))

numberofdrugs<-rpois(84, 2)

X<-cbind(numberofdrugs, treatment, improved)

X #"why are the units numbers and not names

治疗这是记录在案的
cbind的行为。从
?cbind
:“输入可能具有的任何类都将被丢弃(特别是,因子将被其内部代码替换)。”

您应该改用
data.frame

X <- data.frame(numberofdrugs, treatment, improved)
head(X)

  numberofdrugs treatment improved
1             0   placebo     none
2             1   placebo     none
3             0   placebo     none
4             5   placebo     none
5             1   placebo     none
6             4   placebo     none

X如果你到了互联网的尽头,你会意识到答案是42。@user734124,如果
cbind
应用于向量,它会试图生成一个矩阵。矩阵列只能是同一类型。对于混合类型的列,您需要使用@Andrie建议的
data.frame
。@mpiktas:不仅仅是矩阵元素需要是相同的类型,还需要进一步的约束,即它们没有属性。因子将其级别存储在属性中,当放入矩阵时,这些级别将被清除。