r - R中的逻辑下标太长
问题描述
这可能是一个简单的问题,但是有人可以解释为什么下面的第 3 行代码会产生“逻辑下标太长”的错误吗?第二行和第三行代码有什么区别?谢谢!
try2 <- matrix(1 : 50, nrow = 10, byrow = TRUE)
try2[try2 < 10] <- 0
try2[try2 < 10,] <- 0
解决方案
Amatrix
只是vector
具有某些维度作为属性的 a。即,try2
实际上只是1:50
有一些额外的细节:
str(try2)
# int [1:10, 1:5] 1 6 11 16 21 26 31 36 41 46 ...
同样,应用的逻辑函数try2
只有 50 个 TRUE 或 FALSE 值,具有一些维度:
str(try2 < 10)
# logi [1:10, 1:5] TRUE TRUE FALSE FALSE FALSE FALSE ...
所以
try2[try2 < 10] <- 0
非常好,因为你有 50 个值,由 50 个值索引。一切都符合预期。
另一方面,
try2[try2 < 10,] <- 0
要求:
try2[rowselection, columnselection]
不幸的是,您只有 10 行,但您试图对这 10 行使用 50 个值的索引。50 太长而无法放入 10,因此:
try2[try2 < 10, ] 中的错误:(下标)逻辑下标太长
推荐阅读
- mysql - 如何进行 SQL 查询
- node.js - 无法使用对话流从谷歌上的操作写入谷歌电子表格
- ag-grid - 如何控制 ag-grid 的侧面板,所以我只启用分组
- javascript - owl-date-time : 事件没有在日期时间选择时触发?
- html - IE11 中带有页眉、页脚和内容部分的布局
- reactjs - 在这种情况下,可以忽略 react key prop 警告
- image - 如何在 keras 中自定义 ImageDataGenerator 的 .flow 方法(在图像处理中)
- php - PDO 插入 foreach
- c# - 转换 IEnumerable 时的 Sql 超时
列出 在 C# 实体框架中 - network-programming - 生成数据包中所有位所需的时间......为什么数据包大小除以数据大小?