制作稀疏矩阵时出错

2023-11-30

我面临着一个我不明白的问题。这是建议答案的后续行动here and here

我有两个结构相同的数据集。我创建的一个是代码可以工作的可重现示例,另一个是代码不起作用的真实示例。盯着它几个小时后,我找不到导致错误的原因。 下面给出了一个有效的例子

    df <- data.table(cbind(rep(seq(1,25), each = 4 )), cbind(rep(seq(1,40), length.out = 100)))
    colnames(df) <- c("a", "b") #ignore warning
setkey(df, a, b)

这只是为了创建一个可重现的示例。当我应用上述 SO 文章中建议的 - 稍微调整 - 代码时,我得到了我正在寻找的内容:一个稀疏矩阵,指示 b 列中的两个元素何时一起出现在 a 列的值中

library(Matrix)
s <- sparseMatrix(
  df$a,
  df$b,
    dimnames = list(
        unique(df$a),unique(df$b)), x = 1)
v <- t(s) %*% s

现在,在我看来,我在我的真实数据集上所做的事情完全相同,但要长得多。

一个样品dput下面看起来像这样

test <- dput(dk[1:50,])
structure(list(pid = c(204L, 204L, 207L, 254L, 254L, 258L, 258L, 
258L, 258L, 258L, 265L, 265L, 269L, 269L, 269L, 269L, 1520L, 
1520L, 1520L, 1520L, 1532L, 1532L, 1534L, 1534L, 1534L, 1534L, 
1539L, 1539L, 1543L, 1543L, 1546L, 1546L, 1546L, 1546L, 1546L, 
1546L, 1546L, 1549L, 1549L, 1549L, 1559L, 1559L, 1559L, 1559L, 
1559L, 1559L, 1559L, 1561L, 1561L, 1561L), cid = c(11023L, 11787L, 
14232L, 14470L, 14480L, 1290L, 1637L, 4452L, 13964L, 14590L, 
17814L, 23453L, 6658L, 10952L, 17259L, 27549L, 11034L, 22748L, 
23345L, 23347L, 10487L, 11162L, 15570L, 15629L, 17983L, 17999L, 
17531L, 22497L, 14425L, 14521L, 11495L, 24948L, 24962L, 24969L, 
24972L, 24973L, 30627L, 17886L, 18428L, 23972L, 13890L, 13936L, 
14432L, 21230L, 21271L, 21384L, 21437L, 341L, 354L, 6302L)), .Names = c("pid", 
"cid"), sorted = c("pid", "cid"), class = c("data.table", "data.frame"
), row.names = c(NA, -50L), .internal.selfref = <pointer: 0x0000000000100788>)

然后当运行相同的公式时,我收到错误

s <- sparseMatrix(test$pid,test$cid,dimnames = list(unique(test$pid), unique(test$cid)),x = 1)

错误(发生在test数据集也)如下:

Error in validObject(r) : 
  invalid class “dgTMatrix” object: length(Dimnames[[1]])' must match Dim[1]

当我删除时问题就消失了dimnames但我真的需要这些暗淡的名字来理解结果。我确信我错过了一些明显的事情。有人可以告诉我它是什么吗?


我们可以将 'pid', 'cid' 列转换为factor并强制返回numeric or use match with unique每列的值来获取行/列索引,这应该适用于创建sparseMatrix.

test1 <- test[, lapply(.SD, function(x) 
                 as.numeric(factor(x, levels=unique(x))))]

或者我们使用match

test1 <- test[, lapply(.SD, function(x) match(x, unique(x)))]

s1 <- sparseMatrix(test1$pid,test1$cid,dimnames = list(unique(test$pid), 
                 unique(test$cid)),x = 1)
dim(s1)
#[1] 15 50

s1[1:3, 1:3]
#3 x 3 sparse Matrix of class "dgCMatrix"
#    11023 11787 14232
#204     1     1     .
#207     .     .     1
#254     .     .     .

head(test)
#   pid   cid
#1: 204 11023
#2: 204 11787
#3: 207 14232
#4: 254 14470
#5: 254 14480
#6: 258  1290

EDIT:

如果我们希望在“test”中指定完整的行/列索引,我们需要使dimnames与相同的长度max'pid', 'cid' 的

rnm <- seq(max(test$pid))
cnm <- seq(max(test$cid))
s2 <- sparseMatrix(test$pid, test$cid, dimnames=list(rnm, cnm))
dim(s2)
#[1]  1561 30627
s2[1:3, 1:3]
#3 x 3 sparse Matrix of class "ngCMatrix"
# 1 2 3
#1 . . .
#2 . . .
#3 . . .
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

制作稀疏矩阵时出错 的相关文章

  • 加载 plyr 包时出现问题

    我使用 R 2 13 1 但未能成功尝试在 R 中加载包 plyr 1 6 我已将其手动安装到目录 R library 中 我的代码是 libPaths R library library plyr 我收到消息 库 plyr 中的错误 pl
  • R Shiny 中表格的条件格式

    我正在尝试可视化队列分析 并想使用RenderDataTable闪亮以获得这种可视化效果 我将能够突出显示基于具有值 1 0 的单独列的所有单元格 其中 1 被着色 0 不被着色 我尝试了几件事 包括尝试使用geom tile in ggp
  • 通过另一个函数将数据和列名称传递给 ggplot

    我将直接跳到一个示例并在后进行评论 cont lt data frame value c 1 20 variable c 1 20 1 20 1 5 1 20 2 group rep c 1 2 3 each 20 value variab
  • 使用 kableExtra 增加行/行间距

    有没有办法在 r markdown 或 bookdown 中使用 kableExtra 增加 pdf 输出的行间距 library knitr library kableExtra kable head iris 5 caption Iri
  • 如何在 R 中使用别名运行系统可执行文件?

    假设我正在 R 中运行系统命令来运行executable inputfile lt path myfile txt 我该如何更换 path myfile txt在下面的命令中inputfile如下面命令所示 system executabl
  • rgdax(coinbase)数据未按预期收集数据

    我正在尝试使用rgdaxR 包用于下载一些历史价格 我设置了 API 密钥等 并尝试在过去 24 小时内加载 start lt strftime Sys time Y m dT H M SZ tz UTC end lt strftime S
  • 聚合时间

    我的数据包含 1 分钟测量值 我希望将其聚合为 5 分钟和 10 分钟 如何在 10 分钟内将 日 列的数据分组为 5 样本数据2 structure list Day c Monday Monday Monday Monday Monda
  • 在 R 中根据时间序列数据制作 3D 曲面

    我有一个大型数据集 我想从中制作 3D 表面 我希望 x 轴为日期 y 轴为时间 24 小时 z 轴 高度 为我的值 我是 R 初学者 所以越简单越好 http www quantmod com examples chartSeries3d
  • dplyr:取消选择由给出的列

    如何取消选择中给出的列 自写函数的参数 我还需要在另一点选择列 因此只需使用 in 没有解决我的问题 任何解决方案表示赞赏 select 帮助者 操纵者quosures或表达方式 very simple example data test
  • 使用不同的阈值替换多列中的值

    我有一个包含多个列的数据集 其中包含我想要转换为二进制的定量数据 为此 我想使用每列不同的阈值 Example Input antigen1 antigen2 antigen3 antigen4 1 215 421 2 12 2 1524
  • 使用shinyjs通过javascript在闪亮的应用程序中操作现有的Leaflet地图

    我有一个闪亮的应用程序 其中包含现有的传单地图 我希望能够在渲染后使用自定义 javascript 通过shinyjs包裹 一个最小的例子如下 app R packages library dplyr library leaflet lib
  • 替换因子列中的

    我想更换
  • 基于列重复数据集中的行,但增加行[重复]

    这个问题在这里已经有答案了 我有一个数据集 其中包含项目名称 开始年份和合同期限 我需要将这个数据集开发成时间序列 例如 我的数据集中的一行是 项目 A 开始年份 2003 年 合同期限 5 我想根据合同期限重复每一行 我的数据集如下所示
  • 拆分并保存在新的 data.frames 中

    我有一个大 data frame 144 列 我想将其分成每组 3 列 子文件或子 data frame 然后将子 data frame 保存在单独的文件中 换句话说 file1 将包含从 1 到 3 的列 file2 将包含从 6 到 9
  • 在另一列的字符串中搜索一列中的文本

    这里是 R 新手 一直在搜索此论坛 尝试找到一种在同一行数据的字符串中搜索文本的方法 我以前使用过 grepl 但无法让它向下查找列并对每一行应用检查 我觉得这是一个简单的解决方案 但我花了几个小时 但似乎无法得到它 基本上我有类似下面第
  • R + ggplot2 - 无法分配大小为 128.0 Mb 的向量

    我有一个 4 5MB 9 223 136 行 的文件 其中包含以下信息 0 0 0 0147938 3 67598e 07 0 0226194 7 35196e 07 0 0283794 1 10279e 06 0 033576 1 470
  • dplyr::mutate 添加多个值

    网上有几个与此相关的问题dplyr Github 存储库 https github com hadley dplyr已经 并且至少有一个相关的问题 但没有一个问题完全涵盖了我的问题 我认为 在 dplyr mutate 调用中添加多列 ht
  • 在 R 中查找 Windows 用户名

    有没有办法在 R 会话中获取当前的 Windows 用户名或 Windows 主目录 Thanks 抱歉 如果我错过了什么 但我找不到任何东西 你可以做 Sys getenv USERNAME Sys getenv HOME 如果你只是输入
  • 将角色分成几部分

    我观察到以下特征 l lt mod range1 seq m n 0 1 range2 seq 2 2 0 1 range3 seq 2 2 0 1 在 R 中使用正则表达式我想要拆分l在以下结构中 1 mod range1 seq m n
  • 有条件地将字符串转换为特定数值

    我确信对此有一个简单的答案 但我已经扫描了堆栈溢出 但无法找到解决方案 似乎 sapply 和 ifelse 函数的组合可能可以完成这项工作 但我不确定 所以我有一个包含字符的数据框 除了一列是数值 Create dataframe whi

随机推荐

  • Delphi TCP连接透明代理

    有人知道用 Delphi 编写的 TCP 套接字代理应用程序的示例吗 我正在构建一个小型代理应用程序 它需要侦听给定 TCP 端口上的套接字连接 读取通过连接发送的 XML 数据包 通过 TCP 将请求发送到从可用后端服务器池中选择的服务器
  • Webstorm中的Jade语言注入

    我有一个 HTML 元素 我希望将其内容视为 Jade 稍后将其编译为纯 html Webstorm 显然无法识别这一点 因此它没有语法突出显示 如果我将 jade 添加为语言注入 它不会被列为可能的语言注入之一 然而 Jade 文件可以被
  • 使用 rownum 选择表的第二行

    我尝试过以下查询 select empno from select empno from emp order by sal desc where rownum 2 这不会返回任何记录 当我尝试这个查询时 select rownum empn
  • 无法读取未定义的属性“标题”,但显示标题

    我是 Angular 4 的新手 我正在尝试构建我的第一个应用程序 标题显示在屏幕上 但在console 这是 html 文件中的第 26 行 h1 result title h1 This is 旅行详情组件 export class T
  • 合并 Android 单元测试和连接测试代码覆盖率数据已损坏

    Android Gradle 插件 2 3 3 版本能够提供合并的单元测试和连接的测试代码覆盖率数据 在版本 3 0 0 中 此功能被破坏 因为每种测试类型都使用不同且不兼容的 JaCoCo 版本 拉斐尔 托莱多提供中等博客文章展示了如何在
  • 提交表单而不重新加载页面[重复]

    这个问题在这里已经有答案了 我有一个用 JavaScript 构建的函数 我想在表单提交被点击后执行该函数 它基本上完全改变了页面的外观 但我需要搜索框中的一个变量才能继续传递到 JavaScript 目前它会闪烁并重置那里的内容 因为它会
  • 使用 jodatime 查找剩余日期和时间

    我想使用 joda 时间进行比较 查找剩余天数和两天之间的时间 我正在使用两个像这样的 DateTime 对象 一个正在开始 另一个正在结束 DateTime endDate new DateTime 2011 12 25 0 0 0 0
  • React Redux mapDispatchToProps 与 this.props.dispatch

    到目前为止 我以这种方式使用容器和组件操作
  • Angular 2 - Typescript 函数与外部 js 库的通信

    Using JavaScript Infovis 工具包作为绘制图形和树的外部库 我需要操作节点的 onClick 方法 以便异步发送 HTTP GET 请求到服务器 并将来自服务器的数据分配给 Angular 服务类的属性和变量 通过使用
  • 将未链接的 Excel 图表粘贴到 Powerpoint

    我目前正在进行一个项目 将 50 多组 Excel 图表传输到 Powerpoint 演示文稿 我正在比较 50 多个项目并制作 50 多个相同的图表 我在 Excel 工作簿中设置的方式是 图表始终是相同的图表 即图表 2 但通过更改唯一
  • 如何获得UCWA和Skype Web SDK的授权?

    我有 Skype for Business 帐户通话 电子邮件受保护 我正在尝试获得授权 我对 lyncdiscover 服务的第一个请求 GET https lyncdiscover shockw4ves onmicrosoft com
  • Sinch SDK - 如何注销用户?

    我正在使用 Sinch SDK 进行即时消息传递 如何注销用户 我有注销用户的按钮 但无法在 Sinch SDK 中实现该功能 他们的文档或示例都没有描述此类功能 sinch客户端没有注销功能 我们认为移动用户是 在线 的 如果您不想接收更
  • 使用 __future__ 还是 future 来编写兼容 python2 和 python3 的代码更好?

    或者在某些特定情况下 其中一种比另一种更好 到目前为止 我所收集到的只是 future 仅适用于 gt 2 6 或 gt 3 3 我当前的代码非常基本 除了使用打印函数调用之外 在 python2 和 3 上运行相同 然而 随着时间的推移
  • Swift 中的宏?

    Swift 目前是否支持宏 或者未来是否计划添加支持 目前我正在分散 Log trace nil function FUNCTION file FILE line LINE 在我的代码的各个地方 在这种情况下 您应该为 宏 参数添加默认值
  • mvtnorm::pmvnorm 的 Rcpp 实现比原始 R 函数慢

    我正在尝试让 pmvnorm 的 Rcpp 版本至少与 R 中的 mvtnorm pmvnorm 一样快 我已经发现https github com zhanxw libMvtnorm并创建了一个带有相关源文件的Rcpp框架包 我添加了以下
  • 子元素点击事件触发父元素点击事件

    假设你有一些这样的代码 div div div div 我不想触发parentDiv当我点击时点击事件childDiv 我怎样才能做到这一点 Updated 另外 这两个事件的执行顺序是怎样的 你需要使用event stopPropagat
  • C strcpy = 未处理的异常:访问冲突写入位置 0x00000000

    我的 strcpy 函数有问题 使用C 这个简单代码 如下 的要点是将字符串从数组复制到指针数组 char string 20 ABCDEFGH 0 char array of pointers 20 now I want to copy
  • Python 中的列表

    python中的List是同质的还是异质的 gt gt gt def a pass gt gt gt lst 1 one 1 one a 1 1 1 True set 1 gt gt gt for each in lst print typ
  • 猫鼬重复键错误与 upsert

    我有重复密钥的问题 找了好久都找不到答案 请帮助我解决这个问题或解释为什么我收到重复的密钥错误 Trace MongoError E11000 duplicate key error collection project monitor i
  • 制作稀疏矩阵时出错

    我面临着一个我不明白的问题 这是建议答案的后续行动here and here 我有两个结构相同的数据集 我创建的一个是代码可以工作的可重现示例 另一个是代码不起作用的真实示例 盯着它几个小时后 我找不到导致错误的原因 下面给出了一个有效的例