Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用函数内的逻辑条件访问全局向量组件_R_Vector - Fatal编程技术网

R 使用函数内的逻辑条件访问全局向量组件

R 使用函数内的逻辑条件访问全局向量组件,r,vector,R,Vector,此函数用于返回人的体重指数。该函数返回的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")

此函数用于返回人的体重指数。该函数返回的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)
高度\u在\u cms中您可以执行以下操作:

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
bmi_calc 25],
`权重为:`=w[bmi>25])
}
体重指数计算(身高单位为厘米,体重单位为千克)
$`体重指数是:`
[1] 26.85185 25.39062 26.84636
$`权重为:`
[1]  87  65 100
如果愿意,可以使用与获取相同的方法将函数的输出设置为数据帧

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

非常感谢。我是R新手。这会被认为是做这件事的“R方式”,还是仅仅是任何语言的基本逻辑?使用
x[y]
的子集可以被认为是“R方式”。但是我确信其他语言也在使用相同的逻辑。函数应该以不可见的方式(在列表中)返回
bmi
w
<应该使用code>print
而不是
cat
。显然,我经常使用下标来访问特定元素,但从来没有将其与逻辑运算符一起用作R中的下标。我认为这看起来让我很困惑,因为声明变量的名称是相同的。谢谢。该死,看起来不错。我假设这是我现在用R和Python研究的更期望的分析路线。优点是对象是可重用的,可子设置的,等等。
cat
输出本质上是一个字符串,只用于打印。是的,除了df,看起来是一样的。我想我应该总是尝试使用这种语法,因为我总是在处理数据帧。因此,使用dataframe语法只是将其转换为表格式。谢谢。啊,但是再一次,它没有打印所有的bmi。t因为逻辑
bmi>25
它可以很容易地删除,如果你愿意的话。
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