R 使用函数内的逻辑条件访问全局向量组件
此函数用于返回人的体重指数。该函数返回的BMI值符合我的要求,但我不知道如何打印BMI超过25的人的权重。我觉得我应该订阅,但我怎样才能获得这种联系呢?提前谢谢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")
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