让我详细说明一下:
mystr = "foo"
intvector = c(1,2,3,4,5)
trial1 = c(mystr,intvector)
sapply(trial1,class)
trial2 = mat.or.vec(1+length(intvector),1)
trial2[1] = mystr
trial2[2:length(trial2)] = intvector
sapply(trial2,class)
两者都返回
foo 1 2 3 4 5
"character" "character" "character" "character" "character" "character"
如您所见,R为我转换/转换numeric
类型为character
类型,这不是我想要的。谢谢:))
编辑:我将使用结果将(rbind
)直接附加到data.frame
,最初将为空,因此列类尚未定义。
答案 0 :(得分:3)
如果您不使用列表,则无法避免。 c
函数将强制为“最低公分母”,在本例中为“字符”:
trial1 = list(mystr,intvector)
sapply(trial1,class)
#[1] "character" "numeric"
答案 1 :(得分:1)
我相信这应该有效。如果有人找到更好的解决方案,而不使用列表,请告诉我。
trial3 = data.frame(I(mystr), t(intvector))
sapply(trial3,class)
产地:
mystr X1 X2 X3 X4 X5
"AsIs" "numeric" "numeric" "numeric" "numeric" "numeric"
请注意,我们必须在I
中包装mystr并转换intvector以使其工作。