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