R选择使用dplyr的向量元素语法

时间:2017-12-12 16:55:07

标签: r syntax dplyr

以下代码计算虹膜数据集的行间标准差。

library(dplyr)
iris %>% mutate(stDev = apply(.[(1:4)], 1, sd))

我不能在上面的代码中围绕列选择语法。学习R我认为列选择的工作方式如下:

library(dplyr)
iris[, 1:4]

第一个代码块中的'.'有什么用?是否有使用此类语法的列选择的任何其他基本示例?我知道%>%管道假定管道后所有命令的虹膜数据集。但为什么语法会改变?

第一个代码块中的列选择[(1:4)]缺少',',并且用括号()包裹而不是方括号[]

1 个答案:

答案 0 :(得分:2)

iris[1:4]iris[,1:4]都是列子集的有效方法。例如:

> iris[1:4] %>% head()
  Sepal.Length Sepal.Width Petal.Length Petal.Width
1          5.1         3.5          1.4         0.2
2          4.9         3.0          1.4         0.2
3          4.7         3.2          1.3         0.2
4          4.6         3.1          1.5         0.2
5          5.0         3.6          1.4         0.2
6          5.4         3.9          1.7         0.4

> iris[,1:4] %>% head()
  Sepal.Length Sepal.Width Petal.Length Petal.Width
1          5.1         3.5          1.4         0.2
2          4.9         3.0          1.4         0.2
3          4.7         3.2          1.3         0.2
4          4.6         3.1          1.5         0.2
5          5.0         3.6          1.4         0.2
6          5.4         3.9          1.7         0.4
在这种情况下,

()没有做任何事情。 .中的apply(.[(1:4)], 1, sd)只是一种管道语法,表示"将管道前输出的任何内容放到此位置"。因此,在这种情况下,iris通过管道传递给mutate(默认值),.[(1:4)]的第一个参数,其值为{{1} }。以下给出了相同的输出:

iris[(1:4)]