导入tidyverse与dplyr后仍无法找到管道函数%>%的问题
问题分析与解决
首先,你的代码存在语法错误,这大概率是引发报错的核心原因,而非管道函数本身的问题,结合你刚更新R/RStudio的情况,按以下步骤修复:
1. 修正代码语法错误
最后一行的colnames= (symbols)是错误写法,管道操作符%>%后需使用函数式赋值逻辑,改成set_colnames(symbols)或colnames(.) <- symbols即可。另外,tidyverse已包含dplyr和purrr,无需单独加载这两个包,简化后的完整代码如下:
library(tidyverse) library(quantmod) # 创建ETF标的代码 symbols <- c("SPY", "EFA", "IJS", "EEM", "AGG") # 获取每日价格并整理数据 prices <- getSymbols(symbols, src = "yahoo", from = "2012-12-31", to = "2023-04-30", auto.assign = TRUE, warnings = FALSE) %>% map(~Ad(get(.))) %>% reduce(merge) %>% set_colnames(symbols)
2. 解决R与包的版本兼容问题
刚更新R后,旧版本的包可能与新R环境不兼容,导致管道函数无法正常加载,执行以下命令重新安装相关包:
install.packages(c("tidyverse", "quantmod"))
安装完成后重新加载包再运行代码。
3. 验证管道函数可用性
如果仍报错,先单独测试管道函数是否正常工作:
library(tidyverse) 1:10 %>% sum()
若输出55则管道函数正常,问题仍在原代码其他部分;若报错,尝试单独加载magrittr包再测试:
library(magrittr) 1:10 %>% sum()
内容的提问来源于stack exchange,提问作者MNK2008-
相关产品推荐
相关产品推荐

