Syntax error How to extract variables of an S4 object in R?

How to extract variables of an S4 object in R?



Suppose we want to create an S4 with defined name data and two numerical columns called by x and y then we can use setClass("data",representation(x1="numeric",x2="numeric")). Now, if we want to extract the variables of this S4 object then we would need to use @ sign instead of $ sign as in a data frame.

Example1

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

Output

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

Extracting x1 and x2:

Example

> data1@x1

Output

[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

Example

> data1@x2

Output

[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

Example2

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

Output

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

Extracting x1 and x2:

Example

> data2@x1

Output

[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

Example

> data2@x2

Output

[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

Example3

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

Output

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

Extracting x1 and x2:

Example

> data3@x1

Output

[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"

Example

> data3@x2

Output

[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

Example4

> 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

Output

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

Extracting x1 and x2:

Example

> data4@x1

Output

[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

Example

> data4@x2

Output

[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
Updated on: 2020-11-23T09:38:45+05:30

3K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements