2016-10-17 23 views
0

我的问题不仅仅是一个编码问题,而仅仅是好奇心。 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 

(我找不到帮助页面指数化,也许这一切都在详细解释。)

感谢,

+2

'?Extract'“数字值被强制为as.integer的整数(因此截断为零)”。在什么情况下这可能是有用的?我也想知道。 – zx8754

+1

'?'[''包含您需要知道的所有信息,包括将数字转换为整数。 – Miff

+0

噢!这是一个棘手的问题......但仍然有任何关于这种可能性的想法吗? – agenis

回答

1

该文档说:

索引是数字或字符向量或空(缺少)或NULL。 数字值被强制为as.integer的整数(因此 被截断为零)。

你问:

在什么情况下会变成这样可能有用吗?你有 的例子吗?

这是一个非常开放的问题。让我举一个例子。假设您有一个矩阵,并且想要提取与方形数字的索引相对应的所有列。记录^函数返回一个数字向量,即一个double。然而,幸运的是,子集接受这些作为指标。

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

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

另外请注意,您可以使用m[, 1]而不是m[, 1L]

一般来说,如果您计算索引,这种行为很方便(但有时会很危险)。当然,它也可能更加严格,迫使你明确地强制索引为整数,但R的创造者决定支持方便。如果您计算索引并且浮点精度可能成为问题,则需要使用自己的检查。

+0

谢谢罗兰,你的例子是一个很好的例子。我明白,这种行为可能对列矩阵类似于距离度量的大矩阵很有用,就像那样。也许在图像处理也... – agenis

+0

@agenis这种行为可以避免您始终做索引整数。很高兴你不必一直输入“L”。 – Roland

相关问题