R语言中的基本函数使用 - 更新中

Python020

R语言中的基本函数使用 - 更新中,第1张

用法:assign(x, value, pos = -1, envir = as.environment(pos),  inherits = FALSE, immediate = TRUE)

assign函数在循环时候,给变量赋值。

举例说明:

1、

for (i in 1:(length(rowSeq)-1)){

  assign(paste("nginx_server_fields7_", i, sep = ""), nginx_server_fields7[(rowSeq[(i-1)+1]):(rowSeq[i+1]), ])

}

2、

for (i in 1:3){

    assign(paste("a", i, sep = ""), i:10)

}

ls()

[1] "a1" "a2" "a3" "i"

>a1

[1]  1  2  3  4  5  6  7  8  9 10

>a2

[1]  2  3  4  5  6  7  8  9 10

>a3

[1] 3  4  5  6  7  8  9 10

1、paste函数可用于字符串连接

用法:paste (..., sep = " ", collapse = NULL),分隔符默认为空格

我们简单举个例子

1)paste("a","b") ##能连接a b

[1] "a b"

paste("a","b","c")

[1] "a b c"

2)设置分隔符paste("a","b",sep="=") ##注意到用等号分隔了

[1] "a=b"

3)连接多个元素paste("a",1:5,sep="") ##会自动每个元素与a相连

[1] "a1""a2""a3""a4""a5"

4)paste("a",1:5,".pdf",sep="") ##比如想批量输出文件名

[1] "a1.pdf""a2.pdf""a3.pdf""a4.pdf""a5.pdf"、

2、collapse参数

谢益辉大佬说这个参数引无数英雄竞折腰啊,大家只会sep

1)paste("a",1,collapse="+") ##注意到了吧,collapse没用上

[1] "a 1"

2)paste(c("a","b","c"),collapse="+") ##这样就很容易理解了,collapse折叠起了元素

[1] "a+b+c"

3)paste("a",1:5,sep="") ##再来更明显的举例

[1] "a1""a2""a3""a4""a5"

4)paste("a",1:5,sep="",collapse="+") ##先在元素间连接,然后折叠

[1] "a1+a2+a3+a4+a5"

3、与paste0函数的区别

paste0函数,默认sep=""是两个函数唯一的区别

paste(c("a","b","c"),1:3)##默认空格符

[1] "a 1""b 2""c 3"

paste(c("a","b","c"),1:3,sep=" ")

[1] "a 1""b 2""c 3"

paste(c("a","b","c"),1:3,sep="")

[1] "a1""b2""c3"

如果两个向量长度不同paste(c("a","b","c"),1:5) ##超出范围后继续从前向后连接

[1] "a 1"  "b 2"  "c 3"  "a 4"  "b 5"

paste0(c("a","b","c"),1:3)#默认元素连接为sep=""

[1] "a1""b2""c3"

用法:unlist()函数的作用,就是将list结构的数据du,变zhi成非list的数据,即将list数据变成 字符串向量 或者数字向量的形式

如果是向量的话就直接输出向量

例子:

%in%相当于match()函数的一个缩写。用来判断一个数组或矩阵是否包含在另一个数组或矩阵里。举个例子一目了然:

#首先复制两个变量a和b

>a <- 1:5

>b <- 3:7

>a %in% b    #看a的元素是否包含在b中输出结果如下:

[1] FALSE FALSE  TRUE  TRUE  TRUE

用法:apply(x, MARGIN, FUN, ...)

作用:对 矩阵 的行或列使用函数,或者对 数组 的各个维度使用函数

x为数据对象,MARGIN是维度的下标,MARGIN=1表示行,MARGIN=2表示列,FUN是自己指定的任意或自定义函数

注:数据框dataframe也可以使用apply函数,该函数会自动将数据框转化为矩阵,但前提是数据框中各列的数据类型 必须是数值型,否则会报错。

用法:lapply(x,FUN,...)

作用:对列表中的各个元素使用函数

x是格式为列表的数据源,FUN是任意函数。

intersect(data1,data2):交集

union(data1,data2):并集

新建具体的角色,根据需求定义相应的权限,即可  

对于访问控制需求(这里以SQL Server 2005自带的示例说明)有如下说明:假设Adventure Works Cycles将全球的销售按国家和地区分为不同的分公司(Australia分公司、Canada分公司、France分公司、Germany分公司、United Kingdom分公司、United States分公司),

总公司CEO可以看到每个分公司的销售情况,分公司的经理只能看到自己所在的分公司的销售情况。分析需求可以得知,实际上需要根据用户来决定用户访问的数据,可以利用SQL Server 2005 Analysis Service中定义角色的方式来控制。

定义角色可以在多维数据集开发环境中定义,也可以完成多维数集部署之后在数据库服务器端定义。

多维数据集角色是一类访问权限的集合,可以在角色中定义属于这个角色的用户能访问什么数据,不能访问什么数据。定义了角色之后,可以为这个角色添加成员,成员是服务器Windwos账户或者是域账户。当某个角色赋于某个成员之后,客户端使用该用户登陆的时候,只能看到角色中定义的权限访问多维数据集。如果在开发环境定义的角色必须先保存然后部署才能生效。

下面具体介绍设置方法(前台测试工具用普科(ProClarity)):

1、新建Windows测试账户“Jeffrey”。不要定义成Administrator组,因为Administrator组的用户自动拥有访问多维数集的权限。

2、打开Analysis Servie 项目工程,在角色列表项中单击右键新建角色,打开新建角色对框。

3、设置访问权限(如图1)。

图1

这里只需要读取数据,如果用户需要有要处理更新cube时,可以根据需要进行设置。

图2

5、设置多维数据集访问权限,选择“读”,本地钻取选择“钻取”(如图3) 

图三

图36、选择维度数据选项卡,选择维度中的“Customer”维度(如图4)。

图4

7、 假设为Australia分公司定义权限,角色定义了只能访问区域为Australia的数据(如图5),在高级选项卡可以写mdx进行成员的选择。在成员列列中选择“Australi”。

图5

8、 选择“成员身份”选项卡,单击“添加”,在弹出的对话框中输入“Jeffrey”(Windows用户),检查名称之后如图6所示。 

图6

9、完成上面的步骤之后,保存,部署就设置完成。

设置成功这后,客户端软件(Reporting Service,或ProClarity )以Jeffery用户连上多维数据集,就只能访问Australi的数据如图7。

图7

以Jeffery用户登陆,customer下的区域维度所有成员只有Australi,成功的限制Jeffery用户只能访问Australi数据