[英]Accessing a global vector component using a logical condition inside a function
這個 function 返回人們的 BMI。 function返回的 BMI 符合我的要求,但我不知道如何打印那些 BMI 超過 25 的人的體重。我覺得我應該下標,但我如何獲得這種關聯? 提前致謝。
heights_in_cms <- c(180, 165, 160, 193)
weights_in_kg <- c(87, 58, 65, 100)
bmi_calc <- function(h, w) {
bmi = w / (h / 100)^2
cat("BMIs are:", bmi, "\n")
for (b in bmi) {
if (b > 25) {
print(b)
}
}
}
bmi_seq <- bmi_calc(heights_in_cms, weights_in_kg)
使用與tmfmnk 的答案相同的方法,如果您願意,可以將 function 的 output 制作為 dataframe。
bmi_calc <- function(h, w) {
bmi <- w/(h/100)^2
return(data.frame(BMI=bmi[bmi > 25], Weight = w[bmi > 25]))
}
> bmi_calc(heights_in_cms, weights_in_kg)
BMI Weight
1 26.85185 87
2 25.39062 65
3 26.84636 100
編輯:來自評論中的討論
data.frame(Height.cm=heights_in_cms, Weight.kg=weights_in_kg, BMI=weights_in_kg*(heights_in_cms/100)^2)
Height.cm Weight.kg BMI
1 180 87 281.880
2 165 58 157.905
3 160 65 166.400
4 193 100 372.490
你可以做:
bmi_calc <- function(h, w) {
bmi = w/(h/100)^2
print(list(`BMIs are:` = bmi[bmi > 25],
`Weights are:` = w[bmi > 25]))
}
bmi_calc(heights_in_cms, weights_in_kg)
$`BMIs are:`
[1] 26.85185 25.39062 26.84636
$`Weights are:`
[1] 87 65 100
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.