r - 为两个变量的一系列值创建“if...then”语句的代码
问题描述
我正在尝试创建一个“ if... then
”语句,R
其中两个变量G1
和G2
位于给定数据集中的值范围内。例如,我想测试的“if...then”场景是:
if (200 > G1 > -100) and (200 > G2 > -100), then G = mean(G1,G2)
我的场景代码如下所示:
if(200 > G1 > -100 & 200 > G2 > -100) {G = mean(G1,G2)}
我得到的错误是:
Error: unexpected '>' in " if(200 > G1 >"
任何帮助将非常感激!谢谢
更新:
G1 和 G2 是数据框中的两个值列表
这是一个例子:
G1 = 101, G2 = 2
预期输出:G = mean(101,2) = 51.5
解决方案
R
语法不正确。它不同于数学语法
if(G1 > -100 & G1< 200 & G2 > -100 & G2 < 200) G <- mean(c(G1, G2))
-输出
G
[1] 137.5
话虽如此,if/else
仅当“G1”、“G2”为length
1 且不大于 1 时才起作用,因为if/else
未矢量化,即如果长度大于 1,则使用矢量化ifelse
或创建逻辑索引,将“G1”的值子集', 'G2' 基于该索引并得到mean
G1 <- c(125, 135, 142, 215)
G2 <- c(-123, 122, 180, 140)
i1 <- G1 > -100 & G1< 200 & G2 > -100 & G2 < 200
mean(c(G1[i1], G2[i1]))
[1] 144.75
或者,如果我们对mean
满足条件的相应元素感兴趣,那么cbind
对象到 a matrix
,用 'i1' 对行进行子集化并得到rowMeans
rowMeans(cbind(G1, G2)[i1,])
[1] 128.5 161.0
数据
G1 <- 150
G2 <- 125
推荐阅读
- mysql - 无法在mysql中添加外键
- java - 是重复程序/否退出
- angular - 使用 Karma 进行 Angular 单元测试 - 被测组件未在浏览器中呈现
- bootstrap-4 - Bootstrap Datepicker setStart 函数未按预期工作
- javascript - TypeError (0 , _index.DEC_NUM) 不是函数
- r - 为刻度标签添加下标(ggplot2)
- python - 如何在 Tkinter python 中将字符串转换为整数
- reactjs - 尝试在 React 组件中接受名称为 css 的 Props 无效。@情感/反应
- python - 如何使用 timedelta 日期计算管理缺失值
- php - 如何在 php 中使用 Google 控制台服务帐户通过 Google Drive API 获取文件夹/文件列表