问题描述
无法在for循环中正确传递变量名或使用lapply函数。
当我尝试此命令无循环/缓慢播放时,我得到了值:
{
"Atlases": [
{
"TextureFilePath": "default-font-1.png","BaseLineY": 130,"HeightAboveBaseLine": 80,"HeightBelowBaseLine": 24,"distanceBetweenBaseLines": 117,"MinBlankPixelColumns": 10,"Lines": [
"abcdefghijklm","nopqrstuvwxyz","ABCDEFGHIJKLM","nopQRSTUVWXYZ","0123456789=?´`'","!\"§$%&/()[]{}<>|","*~+-_.,:;\\@€#²³","äöüÄÖÜß"
]
}
],"BaseKerning": 0.05,"Spaces": {
" ": 0.2
},"LineBreakYdistance": 1.1,"KerningOffsets": {
}
}
但是当我将其放在> Boxplot.stats(df$price)$out
[1] 38.7 43.8 41.3 50.0 50.0 50.0 50.0 37.2 39.8 37.9 50.0
[12] 50.0 42.3 48.5 50.0 44.8 50.0 37.6 46.7 41.7 48.3 42.8
[23] 44.0 50.0 43.1 48.8 50.0 43.5 45.4 46.0 50.0 37.3 50.0
[34] 50.0 50.0 50.0 50.0
下时,我得到 Null ,为什么?
lapply or for-loop
循环
df_numeric_names <- names(select_if(df,is.numeric))
df_numeric_names
[1] "price" "resid_area" "air_qual" "room_num" "age" "dist1" "dist2" "dist3"
[9] "dist4" "teachers" "poor_prop" "n_hos_beds" "n_hot_rooms" "rainfall" "parks" "Sold"
施加
for (feature in df_numeric_names){
outlier_values <- Boxplot.stats(df$feature)$out
print(outlier_values)
}
- Output:
NULL
NULL
NULL
这是一件很简单的事情,但是我不确定我在做什么错以及如何解决。
解决方法
此循环中的细微变化可以解决您的问题:
for (feature in df_numeric_names){
outlier_values <- boxplot.stats(df[,feature])$out
print(outlier_values)
}
还有一个小例子:
library(dplyr)
#Data
data("iris")
df <- iris
#Numeric names
df_numeric_names <- names(select_if(df,is.numeric))
#Loop
for (feature in df_numeric_names){
outlier_values <- boxplot.stats(df[,feature])$out
print(outlier_values)
}
输出:
numeric(0)
[1] 4.4 4.1 4.2 2.0
numeric(0)
numeric(0)
还可以使用lapply()
使用与此类似的代码:
lapply(df_numeric_names,function(x) {
boxplot.stats(df[,x])$out
})
输出:
[[1]]
numeric(0)
[[2]]
[1] 4.4 4.1 4.2 2.0
[[3]]
numeric(0)
[[4]]
numeric(0)