有沒有辦法獲得在基 R 中定義的所有類?我的預期輸出是一個包含類名的字符向量。像這樣的東西:
"character" "factor" "function" "dataframe" "list" ...
背景:我制作了一個應該應用于盡可能多的類的函式。我無法詳細解釋我在做什么,但考慮str到我所知道的類似的功能可以應用于任何類。另一方面,也有一些函式sum需要特定的輸入,即數字輸入。我想知道所有預定義的類,以便我可以看到我的函式在哪些類上起作用,哪些不起作用。
uj5u.com熱心網友回復:
1)假設這是指 S3 類啟動一個新會話,加載您想要包含的任何包并運行:
sort(unique(sub(".*?\\.", "", ls(.__S3MethodsTable__.))))
2)一種不同的方法,假設這是指包“base”(如果需要,可以為其他基本包重復)和 S3 類,這會在基本包中找到所有名稱,其中包含一個或多個點,然后是唯一值如果有一個點,則給出 res1 的點,如果有兩個或更多點并且不在 res1 中,則給出 res2。這只是一個近似值,因此您必須手動檢查這些以檢查哪些實際上代表了類。
nms <- grep("\\.", ls(asNamespace("base")), value = TRUE)
no_dots <- lengths(gregexpr(".", nms, fixed = TRUE))
res1 <- sort(unique(sub(".*\\.", "", nms[no_dots == 1])))
res2 <- setdiff(sort(unique(sub(".*?\\.", "", nms[no_dots > 1]))), res1)
uj5u.com熱心網友回復:
即使該功能sum支持的比您想象的多,這也會變得棘手,這也取決于class您遇到的問題matrix或array您需要使用的地方typeof,以查看其內容是否是numeric, integer例如。另請注意,默認情況下NA會考慮logical并NULL給出 class NULL。
這里有一些關于不同類變數及其行為的例子 sum
a <- 1L
class(a)
[1] "integer"
b <- 1
class(b)
[1] "numeric"
c <- FALSE
class(c)
[1] "logical"
d <- as.factor(1L)
class(d)
[1] "factor"
e <- matrix(1:2)
class(e)
[1] "matrix"
typeof(e)
[1] "integer"
f <- c(1:2)
class(f)
[1] "integer"
g <- NA
class(g)
[1] "logical"
h <- NULL
class(h)
[1] "NULL"
i <- -Inf
class(i)
[1] "numeric"
j <- array(1:2)
class(j)
[1] "array"
typeof(j)
[1] "integer"
class(sum(a, a))
[1] "integer"
class(sum(a, b))
[1] "numeric"
class(sum(b, b))
[1] "numeric"
class(sum(c, c))
[1] "integer"
class(sum(c, a))
[1] "integer"
class(sum(c, b))
[1] "numeric"
class(sum(d d))
[1] "integer"
Warning message:
In Ops.factor(d, d) : ‘ ’ not meaningful for factors
class(sum(d, d))
Error in Summary.factor(1L, 1L, na.rm = FALSE) :
‘sum’ not meaningful for factors
class(sum(e, d))
[1] "integer"
class(sum(e, e))
[1] "integer"
class(sum(f, f))
[1] "integer"
class(sum(g, h))
[1] "integer"
class(sum(h, h))
[1] "integer"
class(sum(i, i))
[1] "numeric"
class(sum(e, j))
[1] "integer"
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/390462.html
下一篇:如何獲得R中資料幀上每一行的偏度
