我迷迷糊糊關於integer
向更高類型numeric
傳播的問題,早在我自己的在它的上面級myclass
結合:自己的類構建正確
x <- c(1L, 2L, 3L)
class(x) # integer
y <- x
class(y) <- c("myclass", class(y))
class(y) # c("myclass", "integer")
x2 <- x/10
class(x2) # numeric - propagated to higher class numeric
y2 <- y/10
class(y2) # c("myclass", "integer") - not propagated to c("myclass", "numeric")
y2 # 0.1 0.2 0.3 - but decimal numbers!
y3 <- y2
class(y3) <- setdiff(class(y3), "myclass")
class(y3) # integer
y3 # 0 0 0 - integers
我正在尋找一種方式來要麼得到向上傳播到c("myclass", "numeric")
如果操作不產生這樣的結果,或者換一種方式,以保持在擺脫了「MyClass的」部分(或兩者)的小數。我不想爲"myclass"
定義我自己的操作,而是依賴派遣到基本類。
我知道我可以使用typeof()
和內部存儲器之間進行區分,然後取出"myclass"
by class<-
和設置類"numeric"
之前檢查它(或使用attr(obj, "class") <- NULL
有作爲確定類,那麼它爲我做的)。但是,當我執行雙打操作時,如何獲得c("myclass", "numeric")
?
只需將類設置爲'myclass':'class(x)< - 「myclass」'。您不需要爲存儲類型設置類;讓R處理它吧。 – nicola
謝謝您的建議。我真的想保留原來的課程。 'myclass'應作爲各類課程的延伸,例如數字,邏輯,因素。 – Helix123
請注意'數字','邏輯','整數','字符'和'列表'不像其他類一樣。他們沒有'class'屬性;而是他們的存儲類型決定了這個類。你總是可以通過通常的'.xxx'函數來確定一個對象是什麼,所以你基本上不需要有一個地方說明對象是什麼。 – nicola