有人能给我推荐一个在R中使用矢量化编程方法的好教程吗?现在对我来说这感觉非常神奇,我真的不明白R在做什么。尤其是关于if语句和寻址相邻行的值。
发布于 2010-01-02 07:34:28
我不知道关于R的矢量化编程的具体教程。
我有几个版本的高性能计算入门教程here。在概要分析的上下文中提到了向量化代码的好处,但它并没有解释“如何向量化代码”。我认为这很难教--我最好的办法就是阅读别人的代码。从CRAN中挑选几个包,然后到处看看。
除此之外,关于R和R编程的好的通用文档是,例如,Pat Burns S Poetry和更新的R Inferno。
发布于 2010-01-02 08:13:24
学习这一点的最好方法是进行实验,因为它是一个交互式环境,并且很容易创建虚拟数据。
对于在相邻行中进行比较,最简单的做法是使用-运算符(意思是“排除此索引”)来消除第一行和最后一行,如下例所示:
a <- 1:10
a[5] <- 0
a[-1] > a[-length(a)] # compare each row with the preceding value如果要执行一条if语句,您有两个选择:
1) if命令只计算一个值,因此您需要确保它的计算结果为TRUE/FALSE (例如,使用all或any函数):
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)https://stackoverflow.com/questions/1989995
复制相似问题