You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行widyr包cast_dual函数报错:找不到该函数的求助

解决widyr包中cast_dual函数找不到的问题

嘿,我来帮你搞定这个问题!你遇到的could not find function "cast_dual"错误,核心原因是**cast_dual这个函数在widyr包的新版本里已经被移除了**——你参考的教程是基于旧版widyr编写的,随着包的迭代更新,官方已经重构了API,不再维护这个旧函数啦。

替代方案:实现相同需求的两种方法

你原本的代码是想把gapminder数据按country和year作为双维度索引,将lifeExp转换为宽格式(或者构建一个国家-年份对应预期寿命的矩阵),现在可以用以下两种方式实现:

方法1:用tidyr的pivot_wider(推荐,贴合tidyverse生态)

tidyr是tidyverse的核心工具包,pivot_wider可以轻松实现和旧版cast_dual一致的宽格式转换效果:

library(pacman)
p_load(gapminder, tidyverse, widyr)

# 转换为宽格式,行是国家,列是年份,值为对应预期寿命
gapminder_wide <- gapminder %>%
  pivot_wider(names_from = year, values_from = lifeExp)

方法2:构建稀疏矩阵(如果需要旧版sparse = TRUE的效果)

如果你原本需要的是稀疏矩阵格式,可以用Matrix包直接构建:

library(Matrix)
# 创建国家-年份的稀疏矩阵
gapminder_sparse <- sparseMatrix(
  i = as.integer(factor(gapminder$country)),
  j = as.integer(factor(gapminder$year)),
  x = gapminder$lifeExp,
  dimnames = list(levels(factor(gapminder$country)), levels(factor(gapminder$year)))
)

(可选)安装旧版widyr使用cast_dual

如果你一定要用原教程里的cast_dual函数,可以安装包含该函数的旧版本widyr,但不推荐这么做——旧版本可能存在未修复的bug,且不会再收到更新:

# 先查看当前widyr版本
packageVersion("widyr")
# 安装旧版本(需要先安装devtools)
install.packages("devtools")
devtools::install_version("widyr", version = "0.1.3")

内容的提问来源于stack exchange,提问作者ogorodriguez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:16:51