我对R中的(功能)向量操纵感兴趣。具体而言,R与Perl的 map grep 等价的是什么?

以下Perl脚本抓取偶数数组元素并将其乘以2:

@a1=(1..8);
@a2 = map {$_ * 2} grep {$_ % 2 == 0} @a1;
print join(" ", @a2)
# 4 8 12 16

如何在R中做到这一点?到目前为止,我将sapply用作Perl的map:
> a1 <- c(1:8)
> sapply(a1, function(x){x * 2})
[1]  2  4  6  8 10 12 14 16

在哪里可以找到有关R中此类功能性数组操作的更多信息?

另外,是否有类似于Perl Python PhrasebookPerlR短语书?

最佳答案

R具有“grep”,但它的工作方式与您习惯的完全不同。 R具有更好的内置功能:它具有使用 bool 表达式创建数组切片的能力:

a1 <- c(1:8)
a2 <- a1 [a1 %% 2 == 0]
a2
[1] 2 4 6 8

对于map,您可以像上面一样应用函数,但是编写起来要简单得多:
a2 * 2
[1]  4  8 12 16

或一步:
a1[a1 %% 2 == 0] * 2
[1]  4  8 12 16

我从未听说过Perl to R短语书,如果您发现有让我知道的话!总的来说,R比perl或python少一些文档,因为它是一种利基语言。

关于r - R与Perl的map和grep等价的是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3388323/

10-11 23:00
查看更多