如何在R中提取S4对象的变量?

假设我们要创建一个具有定义的名称数据和两个由x和y调用的数字列的S4,则可以使用setClass(“ data”,representation(x1 =“ numeric”,x2 =“ numeric”))。现在,如果要提取此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

例2

> setClass("data2",representation(x1="integer",x2="numeric"))

> data2<-new("data2",x1=rpois(200,5),x2=rexp(50,1.12))

> data2

输出结果

An object of class "data2"

Slot "x1":

[1]  3 7 4 8 5 7 5 11 6 4 5 3 2 7 5 5 4 3 7 8 12 6 10 6 3

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

[51] 7 2 4 3 8 6 4 4 6 7 8 4 5 5 3 4 2 7 7 6 1 6 3 5 2

[76] 5 6 7 3 7 5 7 5 8 2 4 4 2 3 6 1 6 5 5 3 4 3 8 5 7

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

[126] 4 3 4 3 4 7 5 5 2 2 6 4 6 5 5 6 8 4 7 6 3 7 7 7 8

[151] 8 6 4 7 4 4 3 10 4 6 2 5 5 4 4 6 7 5 7 0 6 8 5 8 9

[176] 3 5 5 4 8 4 4 6 5 7 9 6 2 2 2 5 9 3 5 3 3 4 6 2 6

Slot "x2":

[1] 0.03141964 0.49307236 0.31423727 0.43521757 0.52619093 0.70795201

[7] 0.35462825 0.59378101 0.10527933 0.70027538 0.44882733 0.43956142

[13] 0.09664605 0.50706106 1.65260142 0.36428909 0.61297587 1.01703946

[19] 0.89316946 0.59825470 1.32223944 1.77853473 0.19214180 4.76283291

[25] 0.51096582 1.07728540 0.94746461 1.03008930 0.80508219 2.91018171

[31] 0.13807893 0.98123535 0.71989867 1.32550897 0.86492233 0.06968105

[37] 0.75559512 0.27958713 0.18840316 1.39449247 3.78111847 0.26038046

[43] 0.02072275 0.81411699 0.89175522 0.13439256 1.16051005 1.00565524

[49] 0.44863428 0.59886756

提取x1和x2:

示例

> data2@x1

输出结果

[1] 3 7 4 8 5 7 5 11 6 4 5 3 2 7 5 5 4 3 7 8 12 6 10 6 3

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

[51] 7 2 4 3 8 6 4 4 6 7 8 4 5 5 3 4 2 7 7 6 1 6 3 5 2

[76] 5 6 7 3 7 5 7 5 8 2 4 4 2 3 6 1 6 5 5 3 4 3 8 5 7

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

[126] 4 3 4 3 4 7 5 5 2 2 6 4 6 5 5 6 8 4 7 6 3 7 7 7 8

[151] 8 6 4 7 4 4 3 10 4 6 2 5 5 4 4 6 7 5 7 0 6 8 5 8 9

[176] 3 5 5 4 8 4 4 6 5 7 9 6 2 2 2 5 9 3 5 3 3 4 6 2 6

示例

> data2@x2

输出结果

[1]  0.03141964 0.49307236 0.31423727 0.43521757 0.52619093 0.70795201

[7]  0.35462825 0.59378101 0.10527933 0.70027538 0.44882733 0.43956142

[13] 0.09664605 0.50706106 1.65260142 0.36428909 0.61297587 1.01703946

[19] 0.89316946 0.59825470 1.32223944 1.77853473 0.19214180 4.76283291

[25] 0.51096582 1.07728540 0.94746461 1.03008930 0.80508219 2.91018171

[31] 0.13807893 0.98123535 0.71989867 1.32550897 0.86492233 0.06968105

[37] 0.75559512 0.27958713 0.18840316 1.39449247 3.78111847 0.26038046

[43] 0.02072275 0.81411699 0.89175522 0.13439256 1.16051005 1.00565524

[49] 0.44863428 0.59886756

例子3

> setClass("data3",representation(x1="character",x2="numeric"))

> data3<-new("data3",x1=sample(LETTERS[1:4],50,replace=TRUE),x2=rexp(50,1.12))

> data3

输出结果

An object of class "data3"

Slot "x1":

[1] "C" "D" "A" "C" "D" "D" "C" "D" "C" "A" "A" "B" "C" "D" "C" "D" "C" "A" "D"

[20] "C" "C" "A" "B" "B" "C" "D" "D" "B" "B" "C" "A" "C" "D" "A" "C" "D" "A" "C"

[39] "C" "C" "B" "C" "B" "B" "D" "C" "A" "C" "A" "A"

Slot "x2":

[1] 0.15262639 0.18257750 0.66531800 0.90077904 0.31199878 0.15326597

[7] 0.14915567 0.09891334 1.91290294 1.64658850 0.17738544 0.07428495

[13] 0.51221999 1.19112341 0.16764472 1.29586175 0.67945778 0.33704154

[19] 0.21145555 0.28791368 0.95651553 0.48383674 0.76274501 0.71038690

[25] 1.34688895 1.77748828 0.63969314 0.29701294 0.04734766 1.02116237

[31] 0.27368908 0.04268661 0.77449047 3.70772112 0.40526753 0.06333750

[37] 0.26435011 1.03701168 0.08280528 0.86331936 0.15271265 1.45303032

[43] 0.04458336 0.54749522 0.44025731 0.20837975 0.21421977 0.16732185

[49] 1.46172264 0.70931165

提取x1和x2:

示例

> data3@x1

输出结果

[1] "C" "D" "A" "C" "D" "D" "C" "D" "C" "A" "A" "B" "C" "D" "C" "D" "C" "A" "D"

[20] "C" "C" "A" "B" "B" "C" "D" "D" "B" "B" "C" "A" "C" "D" "A" "C" "D" "A" "C"

[39] "C" "C" "B" "C" "B" "B" "D" "C" "A" "C" "A" "A"

示例

> data3@x2

输出结果

[1] 0.15262639 0.18257750 0.66531800 0.90077904 0.31199878 0.15326597

[7] 0.14915567 0.09891334 1.91290294 1.64658850 0.17738544 0.07428495

[13] 0.51221999 1.19112341 0.16764472 1.29586175 0.67945778 0.33704154

[19] 0.21145555 0.28791368 0.95651553 0.48383674 0.76274501 0.71038690

[25] 1.34688895 1.77748828 0.63969314 0.29701294 0.04734766 1.02116237

[31] 0.27368908 0.04268661 0.77449047 3.70772112 0.40526753 0.06333750

[37] 0.26435011 1.03701168 0.08280528 0.86331936 0.15271265 1.45303032

[43] 0.04458336 0.54749522 0.44025731 0.20837975 0.21421977 0.16732185

[49] 1.46172264 0.70931165

例子4

> setClass("data4",representation(x1="logical",x2="numeric"))

> data4<-new("data4",x1=sample(as.logical(c(0,1)),50,replace=TRUE),x2=rnorm(50,1,0.50))

> data4

输出结果

An object of class "data4"

Slot "x1":

[1] FALSE TRUE FALSE TRUE TRUE FALSE TRUE TRUE FALSE FALSE TRUE TRUE

[13] TRUE TRUE FALSE FALSE TRUE TRUE TRUE FALSE TRUE FALSE TRUE FALSE

[25] TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE FALSE TRUE FALSE TRUE

[37] TRUE FALSE FALSE FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE

[49] TRUE FALSE

Slot "x2":

[1] 1.4535492 0.8230134 0.9926188 0.9236218 0.9568131 1.2355998

[7] -0.2649343 1.4839302 0.6435250 0.8384010 1.4399601 1.3696312

[13] 0.2847440 0.6539318 1.2568808 1.4457016 1.1884043 1.3024577

[19] 1.5923689 1.2796569 0.9942924 0.6104080 0.4510600 0.9901056

[25] 0.9496257 1.1278555 0.5048898 1.0492706 1.5142966 0.8459955

[31] 1.4398791 1.0121801 0.9473674 0.2266796 1.3360711 0.2354370

[37] 0.4838408 1.4131759 0.1566150 1.4218652 1.1542315 2.0074517

[43] 1.0019310 0.3909861 0.6707586 0.9373494 1.4065083 0.1781948

[49] 1.4708116 1.1577926

提取x1和x2:

示例

> data4@x1

输出结果

[1] FALSE TRUE FALSE TRUE TRUE FALSE TRUE TRUE FALSE FALSE TRUE TRUE

[13] TRUE TRUE FALSE FALSE TRUE TRUE TRUE FALSE TRUE FALSE TRUE FALSE

[25] TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE FALSE TRUE FALSE TRUE

[37] TRUE FALSE FALSE FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE

[49] TRUE FALSE

示例

> data4@x2

输出结果

[1] 1.4535492 0.8230134 0.9926188 0.9236218 0.9568131 1.2355998

[7] -0.2649343 1.4839302 0.6435250 0.8384010 1.4399601 1.3696312

[13] 0.2847440 0.6539318 1.2568808 1.4457016 1.1884043 1.3024577

[19] 1.5923689 1.2796569 0.9942924 0.6104080 0.4510600 0.9901056

[25] 0.9496257 1.1278555 0.5048898 1.0492706 1.5142966 0.8459955

[31] 1.4398791 1.0121801 0.9473674 0.2266796 1.3360711 0.2354370

[37] 0.4838408 1.4131759 0.1566150 1.4218652 1.1542315 2.0074517

[43] 1.0019310 0.3909861 0.6707586 0.9373494 1.4065083 0.1781948

[49] 1.4708116 1.1577926

以上是 如何在R中提取S4对象的变量? 的全部内容, 来源链接: utcz.com/z/351417.html

回到顶部