有人能指点我在R中使用矢量化编程方法的好教程 目前对我来说感觉非常神奇,我真的不明白R在做什么。 特别是关于if语句和寻址值的相邻行。
答案 0 :(得分:6)
我不知道有关R的矢量化编程的具体教程。
我的高性能计算简介与R 教程here有几个版本。矢量化代码的好处在分析的上下文中提到,但它没有解释“如何向量化代码”。我认为这很难教 - 我最好的选择是阅读其他人的代码。从CRAN中挑选一些套餐然后四处寻找。
答案 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)