採用sapply()
或lapply()
似乎這裏的邏輯:
sapply(iris, function(x) class(x) %in% c("integer","numeric"))
這給:
> sapply(iris, function(x) class(x) %in% c("integer","numeric"))
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
TRUE TRUE TRUE TRUE FALSE
沃斯注意到在你的循環中,你正在增長numericvars
向量在循環的每次迭代中;在R中,這是一個很大的禁忌!它迫使R每次複製和擴展向量。預先分配足夠的存儲空間並填寫對象;在這裏,將意味着創造numericvars
作爲
numericvars <- character(length = ncol(iris))
然後在循環做
nams <- names(iris)
for(i in seq_len(ncol(iris))) {
if(class(iris[, i]) == 'integer' | class(iris[, i]) == 'numeric') {
numericvars[i] <- nams[i]
}
}
多一點的工作,但效率高得多,雖然你只看到它時迭代次數變大。
種植物體是一個沒有沒有('numericvars < - C(numericvars,VAR)') –