【问题标题】:Character to vector in RR中的字符到向量
【发布时间】:2020-09-08 15:20:01
【问题描述】:

我有 3 个二进制向量。

a<-c(0,0,1,0)
b<-c(1,0,0,0)
c<-c(0,0,0,1)

我需要从 3 个向量中选择 2 个并检查它们是否是子集。我使用 combn 函数如下:

> combination<-combn(letters[1:3], 2)
> combination
     [,1] [,2] [,3]
[1,] "a"  "a"  "b" 
[2,] "b"  "c"  "c" 

但问题是 - 所有组合的元素都是字符。如何将这些元素(字母)连接到二进制向量?

例如,如果我调用combination[1,1],我可以获得二进制向量a(不是“a”)。

【问题讨论】:

    标签: r


    【解决方案1】:

    您可以使用get按名称搜索对象

    get(combination[1,1])
    #[1] 0 0 1 0
    

    mget了解更多信息:

    do.call(cbind, mget(combination[,1]))
    #     a b
    #[1,] 0 1
    #[2,] 0 0
    #[3,] 1 0
    #[4,] 0 0
    

    【讨论】:

      【解决方案2】:

      我建议为此编写一个列表。这很可能会让生活更轻松。

      vec_list <- list(a = a, b = b, c = c)
      
      vec_list[combination[1,1]]
      

      这给出了这个:

      $a
      [1] 0 0 1 0
      

      您可以轻松地将其转换为 data.frame()、向量或任何需要的内容。

      【讨论】:

      • 为了清楚起见(对于list 的新手),我可能会添加vec_list[[1]]vec_list[['a']] 将返回相同的内容,并且还要“小心”x[[i, exact = TRUE]] 与确切 = FALSE
      【解决方案3】:

      我们也可以用data.frame包装

      data.frame(mget(combination[,1]))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-03
        • 2011-06-15
        • 2021-12-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多