从向量访问数据

时间:2018-10-30 16:41:00

标签: r vector

我需要帮助来从矢量加载数据

一方面,我有一个带有产品单独标识的数据框(大约13.000 obs)。另一方面,我有几个向量(50),这些向量具有属于同一生产批次的产品的所有单个ID。

我用所有矢量的名称创建了一个数据框。

现在,我必须分别访问每个向量的数据,以与存储在数据帧中的单个ID进行比较。

最终结果是在数据框中添加具有批次名称的新列。

        ID_df=data.frame(ID=c(1:10),LOT=("W/O Lot"),stringsAsFactors = F)

        Lot_a=c(1:3)
        Lot_b=c(4:6)
        Lot_c=c(7:9)

        index=as.data.frame(ls(pattern = 'Lot_'))

        ID_df[which(ID_df$ID %in% Lot_a),2]='Lot_a'
        ID_df[which(ID_df$ID %in% Lot_b),2]='Lot_b'
        ID_df[which(ID_df$ID %in% Lot_c),2]='Lot_c'

        ID_df


           ID     LOT
        1   1   Lot_a
        2   2   Lot_a
        3   3   Lot_a
        4   4   Lot_b
        5   5   Lot_b
        6   6   Lot_b
        7   7   Lot_c
        8   8   Lot_c
        9   9   Lot_c
        10 10 W/O Lot

我尝试过使用FOR循环,但只能读取索引数据框中的向量名称,而不是其中包含的数据。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

执行以下操作:

eval(parse(text = index[1]))

如果我正确理解了您的问题,则您希望R将字符串视为R代码来评估。您可以使用eval来这样做。

以上将为您提供1,2,3作为输出。

答案 1 :(得分:0)

实际上,最好将数据存储在相关的列表中,但是如果它们已经存在于全局环境中,则可以使用lsmget来获取数据列表。您的ls向量匹配的数据:

mget(ls(pattern = "vector_"))

结果:

$vector_a
[1] 1 2 3

$vector_b
[1] 4 5 6

$vector_c
[1] 7 8 9