[英]Apply function on data.frame with mutate across using the same columns from another data.frame
[英]apply() to columns of data.frame
在 data.frame 列的情況下,我不太了解apply()
的行為:
apply(mtcars, 2, is.numeric)
# mpg cyl disp hp drat wt qsec vs am gear carb
# TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
apply(iris, 2, is.numeric)
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# FALSE FALSE FALSE FALSE FALSE
在兩個表中我們都有數字數據,那么為什么結果不同呢?
此外,如果我向mtcars
添加一列,它會更改所有列的結果:
mtcars$colA <- 'charA'
apply(mtcars, 2, is.numeric)
# mpg cyl disp hp drat wt qsec vs am gear carb colA
# FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
為了我的目的(確定列的類型), lapply
完成了這項工作( lapply(mtcars, is.numeric)
) - 但我仍然想弄清楚在apply(df,2,myfunc)
情況下發生了什么
從apply
的文檔中,
細節
如果 X 不是數組而是具有非 null 暗值(例如數據框)的類的對象,則應用嘗試通過 as.matrix 將其強制轉換為二維數組(例如,數據框架)或通過 as.array。
由於這些對象只能容納一個類,因此您要么會得到所有類都是數字,要么如果至少有一個非數字列,那么您將得到所有的FALSE
。 我們可以將它與sapply
的結果進行sapply
,
apply(iris, 2, is.numeric)
#Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# FALSE FALSE FALSE FALSE FALSE
sapply(iris, is.numeric)
#Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# TRUE TRUE TRUE TRUE FALSE
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.