R中的$和@有什么区别?

如果我们有一个定义为df的数据帧,包含第x,y和z列,则可以使用df$x,df$y和df$z从df中提取这些列。另一方面,如果我们将S4对象定义为包含列x,y和z的Data_S4,则可以使用Data_S4@x,Data_S4@y和Data_S4@z提取这些列。

数据框示例:

示例

> x1<-rpois(20,4)

> x2<-rpois(20,2)

> df<-data.frame(x1,x2)

> df

输出结果

 x1 x2

1 4 2

2 7 0

3 10 2

4 3 1

5 7 1

6 2 2

7 3 4

8 4 2

9 7 1

10 2 2

11 1 1

12 6 2

13 1 2

14 1 4

15 1 0

16 4 4

17 5 1

18 5 1

19 6 2

20 3 1

示例

> df$x1

输出结果

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

示例

> df$x2

输出结果

[1] 2 0 2 1 1 2 4 2 1 2 1 2 2 4 0 4 1 1 2 1

S4对象的示例:

例1

> setClass("data1",representation(x1="numeric",x2="numeric"))

> data1<-new("data1",x1=rnorm(20),x2=rexp(20,1.12))

> data1

输出结果

An object of class "data1"

Slot "x1":

[1] -0.586187627 0.853689097 -0.602612795 -2.194235741 -1.318522292

[6] -0.984882420 0.273584140 0.364691611 1.025472248 1.198547297

[11] -0.709282551 -0.001441127 -0.201348012 1.296811172 1.520093861

[16] 2.071031215 0.472877022 0.616211695 0.642165615 -0.122773000

Slot "x2":

[1] 0.38902289 0.20631450 0.02105516 0.24891420 2.37347874 0.43704064

[7] 0.79887672 1.95711822 0.69214407 1.17875759 0.10490338 0.69417206

[13] 0.60324447 0.03573967 0.27204874 1.63015638 1.94575940 2.97829841

[19] 0.22643380 2.06821215

提取x1和x2:

示例

> data1@x1

输出结果

[1] -0.586187627 0.853689097 -0.602612795 -2.194235741 -1.318522292

[6] -0.984882420 0.273584140 0.364691611 1.025472248 1.198547297

[11] -0.709282551 -0.001441127 -0.201348012 1.296811172 1.520093861

[16] 2.071031215 0.472877022 0.616211695 0.642165615 -0.122773000

示例

> data1@x2

输出结果

[1] 0.38902289 0.20631450 0.02105516 0.24891420 2.37347874 0.43704064

[7] 0.79887672 1.95711822 0.69214407 1.17875759 0.10490338 0.69417206

[13] 0.60324447 0.03573967 0.27204874 1.63015638 1.94575940 2.97829841

[19] 0.22643380 2.06821215

以上是 R中的$和@有什么区别? 的全部内容, 来源链接: utcz.com/z/316050.html

回到顶部