网站开发人员属于什么,wordpress密码重置漏洞,西安网页设计培训排名,西安网站建设-中国互联1、双冒号#xff0c;即#xff1a;“::”
要使用某个包里的函数#xff0c;通常做法是先加载#xff08;library#xff09;包#xff0c;再调用函数。最新加载的包的namespace会成为最新的enviroment#xff0c;某些情况下可能影响函数的结果。而package name::funct…1、双冒号即“::”
要使用某个包里的函数通常做法是先加载library包再调用函数。最新加载的包的namespace会成为最新的enviroment某些情况下可能影响函数的结果。而package name::functionname的用法一是可以在需要用某个函数时临时直接加载包不用事先library。另一点更重要的是尽可能减少library带来的附带作用这一点在开发R包时影响较大。而这种写法的副作用是会稍微慢上那么几毫秒在需要反复循环使用一个函数时对效率有影响其他时候除了写起来麻烦一点基本没有显见的副作用。
2、%% 向右操作符forward-pipe operator
把左侧的数据或表达式传递给右侧的函数调用或表达式进行运行可以连续操作。相当于将左边的作为右边函数的第一个参数。
现实原理如下图所示使用%%把左侧的程序的数据集A传递右侧程序的B函数B函数的结果数据集再向右侧传递给C函数最后完成数据计算。 例如
f(x,y)等价于x %% f(y)g(f(x,y),z)等价于x %% f(y) %% g()
library(ggplot2)
library(dplyr)cut_depth - group_by(diamonds,cut,depth)
cut_depth - summarise(cut_depth,nn())
cut_depth - filter(cut_depth,depth55,depth70)
cut_depth - mutate(cut_depth,propn/sum(n))
cut_depth# 使用%%
cut_depth1 - diamonds%%group_by(cut,depth)%%summarise(nn())%%filter(depth55,depth70)%%mutate(propn/sum(n))
cut_depth1# 另外一个例子
library(magrittr)set.seed(123) #设置种子序列保证结果可重复
n1-rnorm(10000)
n2-abs(n1)*50
n3-matrix(n2,ncol 100)
n4-round(rowMeans(n3))
hist(n4%%7)# 使用 %%
set.seed(123)
rnorm(10000) %%abs %% * (50) %%matrix(ncol100) %%rowMeans %% round %% %%(7) %% hist
3、%T%向左操作符tee operator)
功能和 %% 基本是一样的只不过它是把左边的值做为传递的值而不是当前步计算得到的值。
现实原理如下图所示使用%T%把左侧的程序的数据集A传递右侧程序的B函数B函数的结果数据集不再向右侧传递而是把B左侧的A数据集再次向右传递给C函数最后完成数据计算。 例子
假设我们计算如下
library(magrittr)set.seed(123)
rnorm(10000) %%abs %% * (50) %%matrix(ncol100) %%rowMeans %% round %% %%(7) %% hist %% sum 提示报错。这是由于输出直方图后返回值为空那么再继续使用管道就会把空值向右进行传递这样计算最后一步时就会出错。这时我们需求的是把除以7的余数向右传递给最后一步求和。
使用%T%改成如下
library(magrittr)set.seed(123)
rnorm(10000) %%abs %% * (50) %%matrix(ncol100) %%rowMeans %% round %% %%(7) %T% hist %% sum 计算出结果。
4、 %$% (解释操作符exposition pipe-operator)
%$%的作用是把左侧数据的属性名传给右侧让右侧的调用函数直接通过名字就可以获取左侧的数据。比如我们获得一个data.frame类型的数据集通过使用 在右侧的函数中可以直接使用列名操作数据。
现实原理如下图所示使用%$%把左侧的程序的数据集A传递右侧程序的B函数同时传递数据集A的属性名作为B函数的内部变量方便对A数据集进行处理最后完成数据计算。 例子
下面定义一个10行3列的data.frame列名分别为x,y,z获取x列大于5的数据集。使用 %$% 把列名x直接传到右侧进行判断。这里.代表左侧的完整数据对象。一行代码就实现了需求而且这里不需要显示的定义中间变量。
library(magrittr)set.seed(123)
df-data.frame(x1:10,yrnorm(10),zletters[1:10])
df[df$x5,]# 使用%$%后
set.seed(123)
data.frame(x1:10,yrnorm(10),zletters[1:10]) %$% .[x5,]
5、%% (复合赋值操作符compound assignment pipe-operator)
%%复合赋值操作符 功能与 %% 基本是一样的多了一项额外的操作就是把结果写回到最左侧的对象覆盖原来的值。比如我们需要对一个数据集进行排序那么需要获得排序的结果用%%就是非常方便的。
现实原理如下图所示使用%%把左侧的程序的数据集A传递右侧程序的B函数B函数的结果数据集再向右侧传递给C函数C函数结果的数据集再重新赋值给A完成整个过程。 例子
library(magrittr)set.seed(123)
x-rnorm(10)
x %% abs %% sort
x # 取完绝对值排完序之后的结果并没有直接写到x里面去# 使用%%
set.seed(123)
x-rnorm(10)
x %% abs %% sort
x # 但是如果使用%%操作符你会发现取完绝对值排完序之后的结果直接覆盖掉了原来的x。
6、符号$
$符号用于提取数据框data frame或列表list中的成员。它允许访问数据框或列表中的某个列成员并返回该列的值。
例子
df - data.frame(name c(Alice, Bob, Charlie),age c(25, 30, 35))df$name
df$age 注意$符号只能用于数据框和列表类型的对象不能用于向量和其他对象。
7、as.factor 或 factor函数作用
as.factor函数用于将一个变量转换为因子factor类型强制转换分组时用的较多。因子是R语言中用于表示分类变量的数据类型。当将一个变量转换为因子时R会自动将变量的不同取值作为因子的水平level并将原始变量的值替换为对应水平的编码。可以使用as.factor()函数取代factor()函数。
例子
gender - c(男, 女, 男, 男, 女)gender_factor - as.factor(gender)
gender_factor 这里返回结果包括以下两个。
x向量这是将转换为因子的向量。levels原x向量内元素的可能值。
可以使用参数levels强制设定分类数据的顺序
gender - c(男, 女, 男, 男, 女)gender_factor - factor(gender, levelsc(女, 男))
gender_factor
如果有缺失的Levels值也可以使用levels参数设置完整的Levels数据
gender - c(男, 女, 男, 男, 女)gender_factor - factor(gender, levelsc(女, 男, 中))
gender_factor
将因子水平进行修改
gender - c(男, 女, 男, 男, 女)gender_factor - factor(gender, levelsc(女, 男, 中), labels c(1,2,3))
gender_factor
注意指定levels时使用as.factor会报错。
8、aes 函数作用
aes函数是ggplot2包中的一个重要函数用于创建美学映射Aesthetic Mapping即将数据的变量映射到图形的美学属性上。
aes函数的使用通常发生在ggplot()函数中的mapping参数中。它允许将数据的变量映射到图形的不同属性如颜色、形状、大小、位置等。通过将美学属性与具体的数据列关联可以创建丰富多样的图形效果并在不同的图层中进行数据可视化。
# 映射函数函数的最常见参数有两个
# xx向量将数据映射到本图层的x轴
# yy向量将数据映射到本图层的y轴
# …其他向量将数据映射到本图层的其他几何要素上library(ggplot2)
aes(x, y, ...)
9、scale_colour_manual 函数作用
scale_colour_manual是ggplot2包中的一个函数用于手动自定义颜色映射。它允许用户指定不同数据值对应的颜色以及设置相应的标签和图例。
scale_colour_manual函数通常与ggplot函数中的aes函数和相关的图层函数如geom_point、geom_line等一起使用用于自定义颜色映射。例如使用以下代码可以创建一个散点图并手动指定数据值1对应的颜色为红色数据值2对应的颜色为蓝色。
library(ggplot2)# 创建数据框
df - data.frame(x c(1, 2, 1, 2), y c(1, 2, 2, 1), group c(1, 1, 2, 2))# 绘制散点图并手动指定颜色映射
ggplot(data df, mapping aes(x x, y y, color factor(group))) geom_point() # 绘制散点图scale_color_manual(values c(red, blue))
上述代码首先创建了一个数据框df其中包含了三个变量x、y和group。然后使用ggplot函数创建一个散点图并使用aes函数将x映射到x轴y映射到y轴group映射到颜色属性。最后使用geom_point函数绘制散点图并使用scale_color_manual函数手动指定颜色映射将group为1的数据值映射为红色group为2的数据值映射为蓝色。
通过调整scale_color_manual函数中的values参数可以指定更多数据值对应的颜色。
10、scale_fill_manual 函数作用
scale_fill_manual是ggplot2包中的一个函数用于手动自定义填充颜色的映射。它允许用户指定不同数据值对应的填充颜色以及设置相应的标签和图例。
scale_fill_manual函数通常与ggplot函数中的aes函数和相关的图层函数如geom_bar、geom_area等一起使用用于自定义填充颜色映射。例如使用以下代码可以创建一个柱状图并手动指定不同类别的填充颜色。
library(ggplot2)# 创建数据框
df - data.frame(category c(A, B, C, D),value c(10, 15, 20, 25))# 创建柱状图并手动指定填充颜色映射
ggplot(data df, mapping aes(x category, y value, fill category)) geom_col() scale_fill_manual(values c(red, blue, green, yellow))
上述代码首先创建了一个数据框df其中包含了两个变量category和value。然后使用ggplot函数创建一个柱状图并使用aes函数将category映射到x轴value映射到y轴以及作为柱子的填充颜色。最后使用geom_col函数绘制柱状图并使用scale_fill_manual函数手动指定填充颜色映射将不同的category类别映射为不同的颜色。
通过调整scale_fill_manual函数中的values参数可以指定更多数据值对应的填充颜色。
11、stat_ellipse 函数作用
stat_ellipse是ggplot2包中的一个统计变换函数用于在散点图上添加椭圆。它可以根据给定的数据点的均值和协方差矩阵绘制出椭圆来表示数据的分布情况提供了对数据集的可视化描述。
stat_ellipse函数通常与geom_point函数一起使用用于在散点图上显示椭圆。例如使用以下代码可以创建一个带有椭圆的散点图。
library(ggplot2)# 创建数据框
df - data.frame(x rnorm(100), y rnorm(100))# 绘制散点图并添加椭圆
ggplot(data df, mapping aes(x x, y y)) geom_point() stat_ellipse()
上述代码首先创建了一个数据框df其中包含了两个随机生成的变量x和y。然后使用ggplot函数创建一个散点图并使用aes函数将x映射到x轴y映射到y轴。最后使用geom_point函数绘制散点图并使用stat_ellipse函数添加椭圆。
stat_ellipse函数默认使用95%的置信区间绘制椭圆即表示数据的大致范围。还可以通过调整参数来定制椭圆的样式例如设置椭圆的颜色、填充、线条类型等。
完整例子
## 设置种子
set.seed(20240208)## R包加载
library(ggplot2)## 数据构建(无意义)
data1-data.frame(xrnorm(500,mean 15,sd10),yrnorm(500,mean 10,sd10))
data2-data.frame(xrnorm(500,mean 20,sd10),yrnorm(500,mean 15,sd10))
data-rbind(data1,data2)## kmeans聚类
kmeans-kmeans(data,2,nstart 1000)
data$cluster-as.factor(kmeans$cluster)## 绘图
ggplot(data data,aes(xx,yy,colorcluster))geom_point(alpha0.3)stat_ellipse(aes(xx,yy,fillcluster),geom polygon,level 0.95,alpha0.2)scale_colour_manual(values c(#00AFBB,#FC4E07))scale_fill_manual(values c(#00AFBB,#FC4E07))theme_bw()-p1
print(p1) 12、清理所有变量
rm(listls())
13、查看R版本
R.version.string