यह लगभग एक दार्शनिक प्रश्न है: क्या @
का उपयोग कर सीधे एस 4 ऑब्जेक्ट्स के स्लॉट तक पहुंचना और/या सेट करना बुरा है?क्या एस 4 ऑब्जेक्ट्स स्लॉट का उपयोग सीधे @ @ का उपयोग करना खराब अभ्यास है?
मुझे हमेशा बताया गया है कि यह खराब अभ्यास था, और उपयोगकर्ताओं को "एक्सेसर" एस 4 विधियों का उपयोग करना चाहिए, और डेवलपर्स को अपने उपयोगकर्ताओं को इनके साथ प्रदान करना चाहिए। लेकिन मैं जानना चाहूंगा कि क्या कोई इस के पीछे असली सौदा जानता है?
यहाँ sp
पैकेज का उपयोग एक उदाहरण है (लेकिन किसी भी एस 4 वर्ग के लिए सामान्यीकृत किया जा सकता है):
> library(sp)
> foo <- data.frame(x = runif(5), y = runif(5), bar = runif(5))
> coordinates(foo) <- ~x+y
> class(foo)
[1] "SpatialPointsDataFrame"
attr(,"package")
[1] "sp"
> str(foo)
Formal class 'SpatialPointsDataFrame' [package "sp"] with 5 slots
[email protected] data :'data.frame': 5 obs. of 1 variable:
.. ..$ bar: num [1:5] 0.621 0.273 0.446 0.174 0.278
[email protected] coords.nrs : int [1:2] 1 2
[email protected] coords : num [1:5, 1:2] 0.885 0.763 0.591 0.709 0.925 ...
.. ..- attr(*, "dimnames")=List of 2
.. .. ..$ : NULL
.. .. ..$ : chr [1:2] "x" "y"
[email protected] bbox : num [1:2, 1:2] 0.591 0.155 0.925 0.803
.. ..- attr(*, "dimnames")=List of 2
.. .. ..$ : chr [1:2] "x" "y"
.. .. ..$ : chr [1:2] "min" "max"
[email protected] proj4string:Formal class 'CRS' [package "sp"] with 1 slots
.. .. [email protected] projargs: chr NA
> [email protected]
bar
1 0.6213783
2 0.2725903
3 0.4458229
4 0.1743419
5 0.2779656
> [email protected] <- data.frame(bar = letters[1:5], baz = runif(5))
> [email protected]
bar baz
1 a 0.22877446
2 b 0.93206667
3 c 0.28169866
4 d 0.08616213
5 e 0.36713750
संक्षेप में, आपके प्रश्न का उत्तर "हां, यह बुरा अभ्यास है।" अधिक विस्तृत प्रदर्शनी के लिए मार्टिन के उत्तरों देखें। –