【问题标题】:How do I append an int vector to a factor?如何将 int 向量附加到因子?
【发布时间】:2012-03-16 21:53:01
【问题描述】:

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

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= 因子,当我将 intVector 附加到它时,它不会将它附加到标签上。如何将 int 向量附加到因子?

下面是可重现的代码,我只给出了 dput(head(matrix,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

【问题讨论】:

    标签: r vector append r-factor


    【解决方案1】:

    您不能在向量中混合这样的因子和数字 - 您必须使用数据框。

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

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

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

    names(intensityVector) <- idVector
    

    但是 id 不再是一个因素,但您可以通过特定的 id 引用 intensity 中的值,如 intensityVector['f_7936733956214261295']

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

    【讨论】:

    • datafrane 解决方案从身份中生成一个 int,然后将它们四舍五入,如下所示:f_16392539553645958321 变为 1640000000.0。我需要整个标识符来将 id 与具有相同 id 的另一个向量匹配。
    • 它不应该让它们成为数据框中的整数,你确定 idVector 是 'f_xxxxx' 而不是整数?作为最后的手段,您可以使用id=as.character(idVector),但如果idVector 已经是字符,则不需要这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-21
    • 2018-11-07
    • 2015-05-13
    • 1970-01-01
    • 2019-10-07
    • 1970-01-01
    • 2013-12-18
    相关资源
    最近更新 更多