【问题标题】:Ordering array according to index ~ text根据索引排序数组〜文本
【发布时间】:2013-04-09 10:23:21
【问题描述】:

请输入R这些数据:

S.names <- c("FXI", "XLB", "GLD", "IWM", "XLE", "XLF", "EWZ", "GDX", "XLK", 
"TLT", "IYR", "QQQ", "SLV", "EWJ", "XLV", "DIA", "XHB", "EEM", 
"USO", "VWO", "SPY", "EFA")
strike_vec <- structure(list(Strike = c(152, 43, 61, 11, 56, 37, 36, 159, 96, 
74, 71, 27, 163, 128, 35, 44, 30, 40, 81, 19, 31, 48)), .Names = "Strike", row.names = 
c("DIA", "EEM", "EFA", "EWJ", "EWZ", "FXI", "GDX", "GLD", "IWM", "IYR", 
"QQQ", "SLV", "SPY", "TLT", "USO", "VWO", "XHB", "XLB", "XLE", 
"XLF", "XLK", "XLV"), class = "data.frame")

如您所见,strike_vec 行名称等于 S.names 元素。

我想按照S.names 的顺序排列strike_vec 元素,即将每个strike_vec 元素与您找到对应的S.names 行名称的位置相关联。

最终的结果应该是这样的

> strike_vec.new
    [,1]
FXI   37
XLB   40
GLD  159
IWM   96
   ...
   ...
   ...

其中rownames(strike_vec.new) 完全遵循S.names 的顺序。

我该怎么办?

【问题讨论】:

    标签: arrays r indexing


    【解决方案1】:

    只需使用:

    strike_vec[S.names,,drop=FALSE]
    

    这给出了:

        Strike
    FXI     37
    XLB     40
    GLD    159
    IWM     96
    XLE     81
    XLF     19
    EWZ     56
    GDX     36
    XLK     31
    TLT    128
    IYR     74
    QQQ     71
    SLV     27
    EWJ     11
    XLV     48
    DIA    152
    XHB     30
    EEM     43
    USO     35
    VWO     44
    SPY    163
    EFA     61
    

    这是可行的,因为如果您使用字符向量对数据框的行进行索引,则索引将基于行名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-17
      • 1970-01-01
      • 2021-09-30
      • 2020-11-19
      • 2020-03-19
      • 2016-12-27
      • 2016-03-17
      相关资源
      最近更新 更多