如何在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