使用十进制数编制索引:应用程序

时间:2016-10-17 12:56:07

标签: r indexing decimal

我的问题不仅仅是编码问题而不仅仅是好奇心问题。 R中的一个好处是索引规则非常灵活,因为我们可以:  具有正整数,范围,负整数(删除行/列),具有部分列或行名称的索引等的索引

如果我理解这些可能性的有用性,那么可以使用十进制数进行索引的事实使我非常有意义:在什么情况下这可能有用?你有例子吗?不应该返回错误(例如在Matlab中)?

似乎执行trunc操作:

mtcars[22, 1:3]
####                   mpg cyl disp
#### Dodge Challenger 15.5   8  318
mtcars["Dod", sqrt(c(1, 5, 10))]
####                   mpg cyl disp
#### Dodge Challenger 15.5   8  318

(我找不到索引的帮助页面,也许它都详细解释了。)

谢谢,

1 个答案:

答案 0 :(得分:1)

文档说:

  

指数是数字或字符向量或空(缺失)或NULL。   数字值被强制转换为整数,因为as.integer(因此   截断为零)。

你问:

  

在什么情况下这可能有用?你有没有   实例

这是一个非常开放的问题。让我举一个例子。假设您有一个矩阵,并希望提取与方形数字索引相对应的所有列。记录^函数以返回数字向量,即双精度。但是,幸运的是,子集接受这些作为索引。

typeof((1:10)^2)
#[1] "double"

m <- matrix(1:1e3, nrow = 10)
m[, (1:10)^2]
#works

另请注意,您可以使用m[, 1]代替m[, 1L]

通常,如果计算索引,这种行为很方便(但有时很危险)。当然,它也可能更严格并强制你明确地将索引强制转换为整数,但R的创造者决定支持方便。如果计算索引并且浮点精度可能是个问题,则应该使用自己的检查。