R矢量化编程教程

时间:2010-01-01 23:19:04

标签: r

有人能指点我在R中使用矢量化编程方法的好教程 目前对我来说感觉非常神奇,我真的不明白R在做什么。 特别是关于if语句和寻址值的相邻行。

2 个答案:

答案 0 :(得分:6)

我不知道有关R的矢量化编程的具体教程。

我的高性能计算简介与R 教程here有几个版本。矢量化代码的好处在分析的上下文中提到,但它没有解释“如何向量化代码”。我认为这很难教 - 我最好的选择是阅读其他人的代码。从CRAN中挑选一些套餐然后四处寻找。

除此之外,关于R和R中的编程的体面的通用文档例如是Pat Burns S Poetry和最近的R Inferno

答案 1 :(得分:2)

学习这个的最好方法是试验它,因为它是一个交互式环境,并且很容易创建虚拟数据。

关于在相邻行中进行比较,最简单的方法是使用-运算符(这意味着“排除此索引”)来消除第一行和最后一行,如下例所示: / p>

a <- 1:10
a[5] <- 0
a[-1] > a[-length(a)] # compare each row with the preceding value

如果您想要if语句,您有两种选择:

1)if命令仅计算一个值,因此您需要确保它的计算结果为TRUE / FALSE(例如使用全部或任何函数):

if(all(a[-1] > a[-length(a)])) {
  print("each row is incrementing")
} else {
  print(paste("the",which(c(FALSE, a[-1] <= a[-length(a)])),"th row isn't incrementing"))
}

2)您可以使用ifelse函数执行向量化if语句。有关详细信息,请参阅help("ifelse")。这是一个例子:

ifelse(a[-1] > a[-length(a)], 1, 0)