以下代码计算虹膜数据集的行间标准差。
library(dplyr)
iris %>% mutate(stDev = apply(.[(1:4)], 1, sd))
我不能在上面的代码中围绕列选择语法。学习R我认为列选择的工作方式如下:
library(dplyr)
iris[, 1:4]
第一个代码块中的'.'
有什么用?是否有使用此类语法的列选择的任何其他基本示例?我知道%>%管道假定管道后所有命令的虹膜数据集。但为什么语法会改变?
第一个代码块中的列选择[(1:4)]
缺少','
,并且用括号()
包裹而不是方括号[]
。
答案 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)]