我的问题不仅仅是编码问题而不仅仅是好奇心问题。 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
(我找不到索引的帮助页面,也许它都详细解释了。)
谢谢,
答案 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的创造者决定支持方便。如果计算索引并且浮点精度可能是个问题,则应该使用自己的检查。