基于长度超过对象长度的向量从数据框中选择值

时间:2016-02-04 13:41:07

标签: r

从简单数据框中提取数据时遇到问题。假设以下数据框:

CarrierWave.configure do |config|
  config.fog_credentials = {
    :provider               => 'AWS',                        # required
    :aws_access_key_id      => 'xxx',                        # required
    :aws_secret_access_key  => 'yyy',                        # required
    :region                 => 'eu-west-1',                  # optional, defaults to 'us-east-1'
    :host                   => 's3.example.com',             # optional, defaults to nil
    :endpoint               => 'https://s3.example.com:8080' # optional, defaults to nil
  }
  config.fog_directory  = 'name_of_directory'                     # required
  config.fog_public     = false                                   # optional, defaults to true
  config.fog_attributes = {'Cache-Control'=>'max-age=315576000'}  # optional, defaults to {}
end

我想提取以下矢量的费率:

> df  

 Currency  Rate
     AB       1
     CD       2
     EF       3
     GH       4

这样做我使用以下(遗憾的是不起作用):

v <- c(EF, EF, GH, AB, CD, AB)

R返回:

df[df[,1] %in% v, 2] 

但我正在寻找这个载体:

[1] "1" "2" "3" "4" 

任何想法,我如何处理这个问题?

1 个答案:

答案 0 :(得分:1)

您可以使用match,这将导致值重复,并按v中的顺序重复:

df[match(v, df$Currency),2] 
#[1] 3 3 4 1 2 1