首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R向量化编程教程

R向量化编程教程
EN

Stack Overflow用户
提问于 2010-01-02 07:19:04
回答 2查看 1.4K关注 0票数 4

有人能给我推荐一个在R中使用矢量化编程方法的好教程吗?现在对我来说这感觉非常神奇,我真的不明白R在做什么。尤其是关于if语句和寻址相邻行的值。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-02 07:34:28

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

我有几个版本的高性能计算入门教程here。在概要分析的上下文中提到了向量化代码的好处,但它并没有解释“如何向量化代码”。我认为这很难教--我最好的办法就是阅读别人的代码。从CRAN中挑选几个包,然后到处看看。

除此之外,关于R和R编程的好的通用文档是,例如,Pat Burns S Poetry和更新的R Inferno

票数 6
EN

Stack Overflow用户

发布于 2010-01-02 08:13:24

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

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

代码语言:javascript
复制
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函数):

代码语言:javascript
复制
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")。下面是一个例子:

代码语言:javascript
复制
ifelse(a[-1] > a[-length(a)], 1, 0)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1989995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档