什么是R';s相当于Perl';什么是地图和格雷普?
我对什么是R';s相当于Perl';什么是地图和格雷普?,r,perl,dictionary,functional-programming,R,Perl,Dictionary,Functional Programming,我对R中的(功能)向量操作感兴趣。具体来说,R与Perl和的等价物是什么 以下Perl脚本将偶数数组元素变灰,并将它们乘以2: @a1=(1..8); @a2 = map {$_ * 2} grep {$_ % 2 == 0} @a1; print join(" ", @a2) # 4 8 12 16 如何在R中执行此操作?我通过对Perl的映射使用sapply实现了这一点: > a1 <- c(1:8) > sapply(a1, function(x){x * 2}) [
R
中的(功能)向量操作感兴趣。具体来说,R
与Perl和的等价物是什么
以下Perl脚本将偶数数组元素变灰,并将它们乘以2:
@a1=(1..8);
@a2 = map {$_ * 2} grep {$_ % 2 == 0} @a1;
print join(" ", @a2)
# 4 8 12 16
如何在R
中执行此操作?我通过对Perl的映射使用sapply
实现了这一点:
> a1 <- c(1:8)
> sapply(a1, function(x){x * 2})
[1] 2 4 6 8 10 12 14 16
>a1-sapply(a1,函数(x){x*2})
[1] 2 4 6 8 10 12 14 16
在R
中,我在哪里可以阅读更多关于函数数组操作的信息
另外,是否有类似于的Perl
toR
短语手册 R有“grep”,但它的工作原理与您习惯的完全不同。R具有更好的内置功能:它能够使用布尔表达式创建数组切片:
a1 <- c(1:8)
a2 <- a1 [a1 %% 2 == 0]
a2
[1] 2 4 6 8
或者一步到位:
a1[a1 %% 2 == 0] * 2
[1] 4 8 12 16
我从来没有听说过Perl-to-R短语手册,如果您找到了,请告诉我!一般来说,R的文档比perl或python都少,因为它是一种非常适合的语言。快速语言:
- 除了
sapply
,还有lappy()
,tapply
,by
,aggregate
等等。然后在上有许多附加包,例如
- 对于其他语言中的基本函数编程:
Reduce()
,Map()
,Filter()
。。。所有这些都在同一帮助页面上;尝试帮助(减少)
开始
- 正如前面的答案所指出的,矢量化在这里更合适
- 至于
grep
,R实际上有三个内置的regexp引擎,包括一个来自libpcre的基于Perl的版本
- 你似乎从R中遗漏了一些东西。我推荐一本关于R和S语言的好书;我的建议是:钱伯斯(2008年)
a1[a1 %% 2 == 0] * 2
[1] 4 8 12 16