簡體   English   中英

使用 function 中的邏輯條件訪問全局矢量分量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM