【问题标题】:No applicable method for 'mutate_' applied to an object of class "logical"'mutate_' 没有适用的方法应用于“逻辑”类的对象
【发布时间】:2020-02-11 10:07:29
【问题描述】:

我有一个矢量形式的股票代码列表:

> MSCI_USA
  [1] "SLB"   "NOV"   "BKR"   "HAL"   "XOM"   "VLO"   "OXY"   "WMB" 
  [9] "PXD"   "OKE"   "CVX"   "MRO"   "TRGP"  "HES"   "FANG"  "COP"
  .
  .
  .
  [681] "JLL"   "CBRE" 

我创建了一个函数来读取代码、加载它们的股票价格并将符号变异到数据框:

get_prices = function(ticker){
  df = tq_get(ticker, from = date) %>% mutate(symbol = rep(ticker, length(date)))
}

最后,函数map() 用于遍历MSCI_USA 中的项目以获取它们的股票价格,并使用bind_rows() 将每只股票的结果数据框绑定到一个数据框中:

tickers_df = map(MSCI_USA, get_prices) %>% bind_rows()

问题:

R返回错误:

Error in UseMethod("mutate_") : 
  no applicable method for 'mutate_' applied to an object of class "logical"

我不确定错误是什么意思,需要帮助来解决这个错误。提前致谢!

【问题讨论】:

    标签: r tidyverse purrr dplyr


    【解决方案1】:

    一个问题是你的例子不是很reproducible。首先,我将提供代码来重现您的示例数据的子集

    MSCI_USA <- c("SLB", "NOV", "BKR", "HAL")
    

    那么你的get_prices 函数有问题,因为date 是未定义的。我将添加一个日期参数。

    get_prices = function(ticker, date){
      df = tidyquant::tq_get(ticker, from = date) %>% dplyr::mutate(symbol = rep(ticker, length(date)))
    }
    

    有了这个,你的代码对我有用

    tickers_df <- purrr::map(MSCI_USA, get_prices, "2020-02-10") %>% dplyr::bind_rows()
    
    tickers_df
    #> # A tibble: 12 x 8
    #>    date        open  high   low close   volume adjusted symbol
    #>    <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl> <chr> 
    #>  1 2020-02-10  34.1  34.4  33.8  34.3  7197400     33.8 SLB   
    #>  2 2020-02-11  34.2  34.3  33.9  34.3  8825600     34.3 SLB   
    #>  3 2020-02-12  35.2  35.4  34.4  35.0  9093400     35.0 SLB   
    #>  4 2020-02-10  24.0  24.0  22.7  22.9  4214600     22.9 NOV   
    #>  5 2020-02-11  23.4  23.5  22.9  23.3  3094300     23.3 NOV   
    #>  6 2020-02-12  23.9  24.2  23.6  23.9  2704800     23.9 NOV   
    #>  7 2020-02-10  22.3  22.4  22.0  22.2  3184000     22.2 BKR   
    #>  8 2020-02-11  22.5  22.6  22.1  22.1  4126700     22.1 BKR   
    #>  9 2020-02-12  22.4  22.6  21.9  22.2  6025000     22.2 BKR   
    #> 10 2020-02-10  21.5  21.6  21.3  21.4 10099000     21.4 HAL   
    #> 11 2020-02-11  21.8  21.9  21.5  21.7 12984000     21.7 HAL   
    #> 12 2020-02-12  22.3  22.6  21.9  22.4  9892400     22.4 HAL
    

    虽然可以简化为

    tickers_df <- purrr::map_df(MSCI_USA, get_prices, "2020-02-10")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-30
      • 2023-03-13
      • 1970-01-01
      • 2022-09-24
      • 2017-10-24
      • 1970-01-01
      • 2014-09-06
      相关资源
      最近更新 更多