Day4 Data Management II part1 ifelse/loop/function in R

2023-11-05

This article is based on R 4.1.2.

1. ifelse & if/else

a. Identifying fulfilled conditions

  • all(condition)
    • Returns TRUE if the condition is fulfilled by all elements
  • any(condition)
    • Returns TRUE if the condition is fulfilled by at least one element
  • which(condition)
    • Returns the position of the elements for which the condition is TRUE
q <- c(1, 2, 3, 4, 5, 6)

all (q >1 )
> [1] FALSE

any (q > 1)
[1] TRUE

which (q >1 )
[1] 2 3 4 5 6

b. ifelse

  • ifelse(test, yes, no)
    - Very useful when the test is a logical test
    - yes is the result if the test is TRUE
    - no if it is FALSE
data$WTFLG <- ifelse(data$WT > 100, 2, 1)

# If more than two replacements are needed:
data$WTFLG <- ifelse(data$WT > 100, 2,
                            ifelse(data$WT > 70, 1, 0))

# Alternatively:
data$WTFLG[data$WT > 100] <- 2
data$WTFLG[data$WT > 70 & data$WT <= 100] <- 1
data$WTFLG[data$WT <= 70] <- 0

c. if/else

The if/else structure runs alternative code depending on input:

if(test){expression)

# Can be used alone or in combination with else{expression}:
if (any(is.na(data$DV))){
data$DV[is.na(data$DV)] <- -99
} else {
cat(”the dataset appears okay”)
}

d. ifelse 和 if/else 的区别

  • if语句的条件是个TRUE/FALSE值,如果是个长度>1的逻辑向量,只判断第一个TRUE/FALSE值;而ifelse是长度任意的逻辑向量,返回根据逻辑向量对应对的yes/no值组合的新向量
  • ifelse如果test的长度是1,而yes/no是长度>1的向量,也是返回长度为1的对应值。如果yes/no是list类型,则返回第一个元素。而if语句根据条件返回对应表达式的值。
# Example 1:
a = 0
b = c(1, 2, 3)
ifelse(a==0, b, 0)
if(a==0){b}else{0}

## results1:
> a = 0
> b = c(1, 2, 3)
> ifelse(a==0, b, 0)
[1] 1
> if(a==0){b}else{0}
[1] 1 2 3
# Example 2:
a = c(1, 2, 3)
b = 0
ifelse(a == c(1, 2, 3), 1, 0)
if(a==c(1, 2, 3)){1}else{0}
## results2:
> a = c(1, 2, 3)
> b = 0
> ifelse(a == c(1, 2, 3), 1, 0)
[1] 1 1 1
> if(a==c(1, 2, 3)){1}else{0}
[1] 1
Warning message:
In if (a == c(1, 2, 3)) { :
  the condition has length > 1 and only the first element will be used

2. loops

a. for loop

  • A for loop in R is made according to the structure:
for (variable in sequence){expression)

# This allows the expresssion to be run with the variable taking sequentially every value of the sequence such as:
> values <- seq(1, 100, by = 2)
> values_sq <- NULL
> for (i in 1:length(values) ) {
values_sq[i] <- values[i]^2
}
# for 条件里如果不写 1:length 写成length(),输出的结果前面全是NA,只有最后一个被平方

b. while loop

A while loop in R is made according to the structure:

while (condition){expression)

# Executes expression while condition is TRUE.
> x <- 1
> while (x < 5){
x <- x + 1
}

Caution: Beware of infinite loops.

3. Function writing

Creating a function is easy and can be done as:

fun <- function(list of arguments){function code}

# example
square_fun <- function(x){ print(x^2) }
for (i in 1:4) { square_fun(i) }
> [1] 1 4 9 16

NB:
(1) Objects created inside functions only exist in the function

fun <- function(x) {z <- 2 * x}
fun(4)
> [1] 8
z
> Error: object ‘z’ not found

# If object needed outside, use return():
fun <- function(x) {z <- 2 * x; return(z)}
z2 <- fun(4)
z2
> [1] 8

With multiple object returned, use list(): return(list(x,y)) while return (x, y) is not allowed in R

(2) print messages from functions
Functions are “silent”, and Create return message using cat()

  • makes pretty text and translates special characters
    (e.g. \n adds a line break in a character string)
  • used with paste() to generate interactive messages
fun <- function(x) {
z <- 2*x
cat(“Done!”)
return(z)
}
z6 <- fun(3)
> Done!

fun <- function(x) {
z <- 2*x
cat(paste(“The result is”, z))
return(z)
}
z6 <- fun(3)
> The result is 6

4. Apply

  • Loops are really useful but slow and cumbersome in R
  • Specific for R: the apply family (?apply)
    • Applies functions repeatedly over rows/columns
  • Different apply functions for different data structures:
    • lapply, tapply, mapply, sapply, vapply …
  • The dplyr package offers many additional functions which may
    be easier and more intuitive to use compared to apply

详解:https://blog.csdn.net/weixin_45822007/article/details/116247858

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Day4 Data Management II part1 ifelse/loop/function in R 的相关文章

  • 什么是充放电振子理论?

    CHAT回复 充放电振子模型 Charging Reversal Oscillator Model 是一种解释ENSO现象的理论模型 这个模型把ENSO现象比喻成一个 热力学振荡系统 在这个模型中 ENSO现象由三个组成部分 充电 Char
  • 软件测试|使用Python读写yaml文件,你会了吗?

    简介 YAML YAML Ain t Markup Language 是一种可读的数据序列化格式 它常用于配置文件和数据交换 Python 提供了许多库来处理 YAML 文件 在本文中 我们将探讨如何使用 PyYAML 库来读取和写入 YA
  • 基于java的学生成绩在线管理系统设计与实现

    基于java的学生成绩在线管理系统设计与实现 I 引言 A 研究背景和动机 基于Java的学生成绩在线管理系统设计与实现的研究背景和动机是设计一个可以方便管理学生成绩的系统 该系统可以方便地记录学生的成绩 并为老师和学生提供查询和统计功能
  • 软件测试|教你使用Python下载图片

    前言 我一直觉得Windows系统默认的桌面背景不好看 但是自己又没有好的资源可以进行替换 突然我一个朋友提醒了我 网络上的图片这么多 你甚至可以每天换很多个好看的背景 但是如果让我手动去设置的话 我觉得太麻烦了 我不如使用技术手段将图片下
  • 【C++】__declspec含义

    目录 一 declspec dllexport 如果这篇文章对你有所帮助 渴望获得你的一个点赞 一 declspec dllexport declspec dllexport 是 Microsoft Visual C 编译器提供的一个扩展
  • 【卡尔曼滤波】具有梯度流的一类系统的扩散映射卡尔曼滤波器研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据 文章
  • 面试官随便问几个问题就知道你究竟做没做过微信支付宝支付

    面试官随便问几个问题就知道你究竟做没做过微信支付宝支付 你知道直连模式和服务商模式吗 网上的课程一般给你演示的都是直连模式 而企业中有不少是申请成为了服务商 因为里面有佣金提成 我粗俗地解释 直连模式 就是说你是一个会做生意的老板 自己会搞
  • Hutool改变我们的coding方式(二)

    Hutool改变我们的coding方式 Hutool 简介 Hutool如何改变我们的coding方式 文档 安装 Maven
  • 史上最全Java面试八股文(带全部答案)2024年最新版

    今天要谈的主题是关于求职 求职是在每个技术人员的生涯中都要经历多次 对于我们大部分人而言 在进入自己心仪的公司之前少不了准备工作 有一份全面细致 面试题 将帮助我们减少许多麻烦 在跳槽季来临之前 特地做这个系列的文章 一方面帮助自己巩固下基
  • 计算机Java项目|在线图书管理

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 计算机Java项目|学生成绩管理系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 春眠不觉晓,Java数据类型知多少?基础牢不牢看完本文就有数了

    俺滴座右铭是不在沉默中爆发 就在沉默中灭亡 一起加油学习 珍惜现在来之不易的学习时光吧 等工作之后 你就会发现 想学习真的需要挤时间 厚积薄发啦 我们知道Java是面向对象的静态型编程语言 在Java的世界里万物皆对象 但我认为是万物皆数据
  • 详解toLowerCase(判断字符串相等)

    一 toLowerCase 函数简介 toLowerCase 是一个在多个编程语言中都存在的字符串方法 它的作用是将字符串中的所有大写字母转换为对应的小写字母 常用于文本处理 搜索和比较等情况 以确保字符串的一致性和非大小写敏感的操作 二
  • 【一种新的Burton-Miller型奇异边界方法(BM-SBM)】用于声学设计灵敏度分析,2D和3D声学设计灵敏度分析的奇异边界方法研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 2D 2 2 3D
  • 2024年华为OD机试真题-分割均衡字符串-Python-OD统一考试(C卷)

    题目描述 均衡串定义 字符串只包含两种字符 且两种字符的个数相同 给定一个均衡字符串 请给出可分割成新的均衡子串的最大个数 约定字符串中只包含大写的 X 和 Y 两种字符 输入描述 均衡串 XXYYXY 字符串的长度 2 10000 给定的
  • 基于节点电价的电网对电动汽车接纳能力评估模型研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据
  • 计算机Java项目|有机蔬菜商城

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 2024最强Java面试八股文合集(持续更新)

    今天要谈的主题是关于求职 求职是在每个技术人员的生涯中都要经历多次 对于我们大部分人而言 在进入自己心仪的公司之前少不了准备工作 有一份全面细致 面试题 将帮助我们减少许多麻烦 在跳槽季来临之前 特地做这个系列的文章 一方面帮助自己巩固下基
  • 计算机Java项目|人体健康信息管理系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 计算机Java项目|java游戏账号交易系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板

随机推荐

  • c++ 中vector的count是unsigned int而C#中泛型的count为int

    需要注意的 在使用一个返回值之前 要知道这个返回值是什么类型的 不要根据自己的臆断来写 否则c 很多bug不知道原因 十分注意 对比的时候 是自动转成unsigned int类型进行比较的 Orz C 中的泛型 用count都是int类型
  • 连通图的桥(对桥和割点的理解)

    题目链接 https cn vjudge net problem UVA 796 顺便总结一下 对于连通图的桥和割点 首先 从tarjan的角度来说 dfn数组代表的是当前节点的编号 也就是时间戳 low数组代表的是当前节点能够到达的最早的
  • 利用SqlServer触发器自动更新表updatetime字段值

    本文主要记录了使用SqlServer数据库触发器自动更新表的 更新时间updatetime 字段 在 MySQL数据库中 某行数据创建时间字段 createtime 行最新更新时间字段updatetime 可建表时分别用 datetime
  • 【k8s集群管理工具篇】安装kubernetes集群管理工具 - Kuboard v3版本

    k8s集群管理工具篇 安装kubernetes集群管理工具 Kuboard v3版本 一 kuboard介绍 1 kuboard解释 2 kuboard的V3版本 二 安装kuboard 1 下载yaml文件 2 安装kuboard 三 查
  • 使用PIL实现图像的二值化和灰度化DIY

    使用PIL实现图像的二值化和灰度化并输出保存 精简版代码如下 图片二值化 from PIL import Image img Image open r W PY newpicpic bbvvasd jpg 模式L 为灰色图像 它的每个像素用
  • 编译KArchive在windows10下

    使用QT6和VS2019编译KArchive的简要步骤 安装 Qt 我是用源码自己编译的 F qtbuild 安装CMakefile并配置环境变量 安装Git 下载ECM源码 https github com KDE extra cmake
  • linux安装mysql的两种方式

    一 安装到linux 1 安装mysql server 1 在安装之前查看下系统是否已经安装了mysql ls usr share 2 安装mysql server sudo apt get install mysql server 3 再
  • Linux查看并杀死进程

    Linux查看并杀死进程 查看进程 方法一 lsof i 80 i lt 条件 gt 列出符合条件的进程 协议 端口 ip 方法二 netstat anp grep 进程ID a或 all 显示所有连线中的Socket n或 numeric
  • 基于springboot,hdfs的网盘系统(查看,上传,下载,删除,新建文件)

    基于maven的springboot项目 项目目录如下 类路径如下 HDFSREQUEST package cn object demo02 controller import lombok Data import lombok AllAr
  • JAVA中常用的Queue的介绍

    目录 1 java中队列的分类以及队列的介绍 2 PriorityQueue队列的介绍 2 1 PriorityQueue继承结构和方法解读 2 2 PriorityQueue的构造器的实现 3 Deque 双向队列 的简单介绍 3 1 A
  • H . 真签到题

    题目链接 题目描述 Fibonacci 数列 f n f n 1 f n 2 前n项为1 1 2 3 5 8 给出n m 需要你计算出满足条件的对数 i j 的个数 且i lt j 条件是 1 lt gcd f i f j lt n i j
  • 2021-01-23MNIST 测试实战

    通过多个 step 来完成整个训练集的一次迭代 叫做一个 Epoch 在实际训练时 通常需要对数据集迭代多个 Epoch 才能取得较好地训练效果 for epoch in range 20 完成一个 Batch 的数据训练 叫做一个 Ste
  • Docker笔记--查看本地镜像、搜索镜像、拉取镜像和删除镜像

    目录 1 查看本地镜像 2 搜索镜像 3 拉取镜像 4 删除镜像 1 查看本地镜像 sudo docker images 其中 REPOSITORY 表示镜像的名称 TAG 表示版本号 默认下载最新版本latest IMAGE ID表示镜像
  • 创业之路-67]:创业公司不同的产品模式

    模式1 科研型 预研型 3 5年 市场还不成熟 需求还没有显性 属于预测性需求 行业内还没有的成熟的产品形态 行业和自身的技术也都不成熟 还需要一定的酝酿期和技术积累 产品研发通常需要三年以上 甚至五年以上 需要投资资金烧钱 做未来的事 前
  • python读取fits第三方库_python-astropy.io.fits从具有多个HDU的大型fits文件中读取行

    我有一个约50GB的fits文件 其中包含多个HDU 它们都具有相同的格式 一个带有1E5对象和1E6时间戳的 1E5 x 1E6 数组 HDU描述了不同的物理属性 例如磁通 RA DEC等 我只想从每个HDU中读取5个对象 即 5 x 1
  • Databend 开源周报 第 97 期

    Databend 是一款现代云数仓 专为弹性和高效设计 为您的大规模分析需求保驾护航 自由且开源 即刻体验云服务 https app databend cn What s On In Databend 探索 Databend 本周新进展 遇
  • v.douyin.com生成制作抖音缩短口令网址php接口方法

    v douyin com是抖音官方的接口 可以制作头条 火山 抖音短视频等官方域名的任意生成接口 可以推广抖音号 第三方网址 头条文章等 效果非常号 这里记录下api接口 纯技术php生成 具体规则可以去抖音的开放平台去申请对应接口 这里用
  • 原码,反码,补码

    版权声明 本文为博主原创文章 未经博主允许不得转载 https blog csdn net Jason M Ho article details 78700434 数值在计算机中是以补码的方式存储的 在探求为何计算机要使用补码之前 让我们先
  • 今日头条(OCPC)广告激活数据对接-JAVA版

    最近在今日头条投广告 头条反馈可以按照实际激活数据的转换来付费 也就是说 只有用户真的下载并打开应用了才收费 过程类似与早年间的GHOST系统预装软件 下面说下头条的整个逻辑 头条处理逻辑 1 用户在头条点击广告页 广告页引领用户去下载 用
  • Day4 Data Management II part1 ifelse/loop/function in R

    This article is based on R 4 1 2 1 ifelse if else a Identifying fulfilled conditions all condition Returns TRUE if the c