R Key Value对像Hastable

时间:2016-01-13 21:42:05

标签: r dynamic collections hashtable

我是R编程的新手,你能帮忙解决两个场景吗?

  1. 如何自动化多个属性和值,例如Attribute_1_Name,Attribute_1_Value ...,Attribute_n_Name,Attribute_n_Value并获得最终结果,如下所示?

    result = cbind.data.frame(
    PFA_Unique_Identifier,
    Fund_Unique_Identifier,
    VaR_Type,
    
    Attribute_1_Name,
    Attribute_1_Value,
    Attribute_2_Name,
    Attribute_2_Value, .............., Attribute_n_Name, Attribute_n_Value, varValueRaw )
    
  2. 如何创建名称/值对的哈希表,并在R中的下面一段代码中自动化。

    if (attributeCount == 0)
      {
        Attribute_1_Value = Attribute_1_Name = NA
        Attribute_2_Value = Attribute_2_Name = NA
      }
      else if (attributeCount == 1)
      {
        Attribute_1_Name = rep(attributeNames,n)
        Attribute_1_Value = attributeFilter
        Attribute_2_Value = Attribute_2_Name = NA
      }
      else if (attributeCount == 2)
      {
        Attribute_1_Name = rep(attributeNames[1],n)
        Attribute_1_Value = attributeFilter[,1]
        Attribute_2_Name = rep(attributeNames[2],n)
        Attribute_2_Value = attributeFilter[,2]
      }
      else
      {
        stop("It has not been implemented for attributes filter more than 2")
      }
    

1 个答案:

答案 0 :(得分:1)

很难理解你在问什么,但我认为你正在寻找FAQ 7.21

这个答案中最重要的部分是最后几句话,它说最简单的把事情放到一个列表中。如果你真的需要对键/名称进行哈希处理,那么你可以使用环境而不是列表,界面几乎相同,但是环境使用哈希,最后我记得列表进行线性查找(你可能不会注意到差别)除非您的列表或环境中有数千个对象。)

你只是想创建一个向量或字符串吗? (记住列表与矢量不同)。

如果是这样,这是一种方式:

n <- 3
outstring <- c(
  "PFA_Unique_Identifier", "Fund_Unique_Identifier", "VaR_Type",
  rbind(
    sprintf("Attribute_%d_Name", seq_len(n)),
    sprintf("Attribute_%d_Value", seq_len(n))
  ),
  "varValueRaw"
)

outstring

如果您想将其作为单个字符串,请执行以下操作:

paste(outstring, collapse=", ")