如何将int向量附加到因子?

时间:2012-02-27 12:08:51

标签: r vector append r-factor

我有一个名为矩阵的矩阵,如下所示:

charge  convexhull_xCoor    convexhull_yCoor    id              intensity
3       3336.43             667.62       f_7936733956214261295  475891
3       3339.73             667.6        f_7936733956214261295  475891

我得到两个向量,id和强度:

idVector = matrix[4]
intensityVector = matrix[5]

我想使用append:

将这两个向量添加到一起
bigVector = append(idVector, intensityVector)

然而,当我这样做时,我得到了这个结果:

[1]       4       3       2       1  475891 5490000 1860000 1100000

R在idVector中创建了一个class = factor,当我将intVector附加到它时,它没有将它附加到标签上。如何将int向量附加到因子?

下面是可重现的代码,我只给出了dput(head(矩阵,4)),因为它给出了很多的id,我给了dput(head(matrix,4))而是矢量。

vector1 = structure(c(4L, 3L, 2L, 1L), .Label = c("f_15177294341548527346", "f_18178836531573487427", "f_2444900193131259878", "f_7936733956214261295"), class = factor")
vector2 = c(475891, 5490000, 1860000, 1100000)
bigVector = append(vector1, vector2)
vector1
vector2
bigVector

1 个答案:

答案 0 :(得分:2)

你不能混合因素和像向量中的数字 - 你必须使用数据框。

bigdf <- data.frame( id=idVector, intensity=intensityVector )

然后查看bigdf(您可以通过bigdf$id访问列等)。

或者,如果idVector的元素是唯一的,您可以添加idVector作为intensityVector的名称属性:

names(intensityVector) <- idVector

但是,ID不再是一个因素,但您可以在intensity中引用id中的值,与intensityVector['f_7936733956214261295']中的{{1}}一样。

数据框架方法几乎总是更好,因为它非常适合统计分析。