结合不同类的参数

时间:2011-07-12 00:37:27

标签: r

让我详细说明一下:

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,最初将为空,因此列类尚未定义。

2 个答案:

答案 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以使其工作。