当前位置: 首页 > news >正文

R • exercises

catalogue

  • 题目1:变量赋值和基本运算
  • 题目2:向量创建和元素访问
  • 题目3:使用内置函数计算统计量
  • 题目4:混合运算与优先级理解
  • 题目5:模运算与整数除法
  • 题目6:类型转换与比较运算
  • 题目7:因子(Factor)的创建与理解
  • 题目8:逻辑(Logical)向量与索引提取
  • 题目9:列表(List)的创建与元素访问
  • 题目10:基础if-else判断(数字性质判断)
  • 题目11:嵌套if与逻辑运算符(成绩等级评定)
  • 题目12:ifelse()向量化函数
    • 解惑
  • 题目13:基础for循环(数列求和)
  • 题目14:while循环与条件控制(斐波那契数列)
  • 题目15:循环控制与next语句(特定倍数查找)

题目1:变量赋值和基本运算

num<-10square<-num**2cube<-num**3print(paste("平方为:",square,"立方为:",cube))#用print()将字符串和变量值同时输出要结合paste()cat("平方为:",square,"立方为:",cube,"\n")

题目2:向量创建和元素访问

vec<-c(5,10,15,20,25)cat("第三个元素为:",vec[3])cat("向量长度为:",length(vec))

题目3:使用内置函数计算统计量

data<-c(12,15,18,21,24)cat("平均值为:",mean(data),"总和为:",sum(data),"标准差为:",sd(data))

题目4:混合运算与优先级理解

result1<-3+4*5result2<-(3+4)*5print(paste("3 + 4 * 5 = ",result1," ","(3 + 4) * 5 = ",result2))

题目5:模运算与整数除法

days<-365weeks<-days%/%7remaining_days<-days%%7cat("365天是",weeks,"个星期零",remaining_days,"天")

题目6:类型转换与比较运算

num_var<-123char_var<-"123"converted_var<-as.numeric(char_var)cat("num_var与converted_var的值是否相等:",num_var==converted_var)#==只比较值cat("num_var与char_var的值是否相等:",num_var==char_var)cat("num_var的类型为",class(num_var))cat("char_var的类型为",class(char_var))cat("converted_var的类型为",class(converted_var))cat("num_var与converted_var是否相等:",identical(num_var,converted_var))#identical()比较值、类型cat("num_var与char_var是否相等:",identical(num_var,char_var))

题目7:因子(Factor)的创建与理解

unclass()的结果单独打印,这样能更清晰地显示整数向量。对于向量结果,使用print()cat()更能保持原始格式。

weather<-c("Sunny","Cloudy","Rainy","Sunny","Rainy")weather_factor<-factor(weather,levels=c("Rainy","Cloudy","Sunny"))print(weather_factor)print("因子的内部数值表示:")print(unclass(weahter_factor))print("因子的水平:")print(levels(weahter_factor))#print(paste("因子的内部数值表示:",unclass(weather_factor)))#cat("因子的水平:",levels(weather_factor))

题目8:逻辑(Logical)向量与索引提取

scores<-c(85,92,78,60,95,53)pass_logical<-scores>=60print(pass_logical)print(scores[pass_logical])

题目9:列表(List)的创建与元素访问

my_list<-list(c(1,2,3),"Hello World",TRUE)print(my_list[[2]])#提取元素本身print(class(my_list[[2]]))print(my_list[2])#提取子列表print(class(my_list[2]))names(my_list)<-c("numbers","greeting","flag")print(my_list$greeting)

题目10:基础if-else判断(数字性质判断)

user_input<-readline("请输入一个数字:")#获取输入num<-suppressWarnings(as.numeric(user_input))#使其不报错,如果转换错误则num为NULLif(is.na(num)){#处理非数字输入的情况cat("错误:您输入的不是有效的数字!\n")}else{#处理正确输入的情况if(num>0){cat("正数\n")}elseif(num<0){cat("负数\n")}else{cat("零\n")}}

题目11:嵌套if与逻辑运算符(成绩等级评定)

user_input<-readline("请输入成绩:")num<-suppressWarnings(as.numeric(user_input))if(is.na(num)){cat(user_input,"不是有效数字\n")}else{if(num>100|num<0)cat("Invalid Score")elseif(num>=90)cat("Excellent")elseif(num>=80)cat("Good")elseif(num>=70)cat("Average")elseif(num>=60)cat("Pass")elsecat("Fail")}

题目12:ifelse()向量化函数

# 1. 创建数值向量x<-c(-2,5,0,12,-5,9,100)# 2. 使用ifelse()函数进行向量化判断result_vec<-ifelse(x>0,"Positive","Non-Positive")# 3. 打印结果print(result_vec)# 4. 使用传统的for循环和if-else语句实现同样功能result_loop<-character(length(x))# 创建空字符向量存储结果for(iin1:length(x)){if(x[i]>0){result_loop[i]<-"Positive"}else{result_loop[i]<-"Non-Positive"}}# 打印循环实现的结果print(result_loop)# 验证两种方法结果是否一致identical(result_vec,result_loop)

解惑

为什么空字符向量用result_loop <- character(length(x))而不是result_loop <- c():因为result_loop <- character(length(x))提前分配好了存储结果的内存空间,而result_loop <- c()每次循环时都会重新分配内存,当数据量大时会严重影响性能,这就是为什么在传统for循环中通常需要预先初始化结果向量的原因。

题目13:基础for循环(数列求和)

numbers<-c(2,5,8,11,14)sum_of_squares<-0for(iinnumbers){#i用num更好看sum_of_squares<-sum_of_squares+i^2}cat("数列平方和为:",sum_of_squares)#使用cat打印,print应为print(paste())

题目14:while循环与条件控制(斐波那契数列)

prev<-1# 上一个curr<-1# 当前fib_seq<-c(prev,curr)while(TRUE){next_val<-prev+curr# 下一个if(next_val>100)breakfib_seq<-c(fib_seq,next_val)# 符合要求的放这prev<-curr# 把上一个更新为curr,因为有了新的“下一个”curr<-next_val# 把前“下一个”更新为curr,因为有了新的“下一个”}cat("斐波那契数列为:",fib_seq,"\n")

题目15:循环控制与next语句(特定倍数查找)

is_prime<-function(n){if(n<=1){# 小于等于1的不是质数return(FALSE)}elseif(n==2){# 2是最小的质数return(TRUE)}elseif(n==3){# 3在下面循环里会被误判为非质数,不能用||把3和前面的2放一起,因为这样只会打印2return(TRUE)}elseif(n%%2==0){return(FALSE)}# 偶数(除了2)不是质数for(iinseq(3,floor(sqrt(n)),by=2)){# 检查从3到sqrt(n)的奇数,避免重复检查,因为2是唯一的偶质数,且奇数的因数只能是奇数if(n%%i==0){return(FALSE)# 质数不能被其它数整除}}return(TRUE)# 不能放在for (i in seq(3, floor(sqrt(n)), by=2))的else里,因为可能有很多不整除(导致提前退出循环),但只要有一个整除就不要了}for(iin1:50){if(i%%15==0){# 放前面,扔掉不要的,再对剩下的判断cat("跳过15的倍数:",i,"\n")next# 跳出这次循环,进入下一次循环}if(i%%3==0&&i%%5!=0){if(is_prime(i))# 2是质数,但2根本进不了if,所以不打印 ,is_prime是个判断质数的通用函数cat(i,"*\n",sep="")# 质数加星号,sep避免星号和质数间的空格elsecat(i,"\n")# 不是质数,直接打}}
http://www.cnnetsun.cn/news/3668852.html

相关文章:

  • PowerToys汉化终极指南:解锁Windows效率工具的完整中文体验
  • Inkscape光线追踪:5步完成专业光学设计的终极指南
  • RemixIcon 图标库完全指南:如何为你的项目快速添加2500+专业图标
  • 模型压缩技术:量化与蒸馏实现AI图像生成轻量化
  • 3大渲染难题的终极解决方案:Photon光影包深度技术解析
  • ACKTR算法解析:Kronecker分解与信任域优化的强化学习实践
  • PHP 性能优化实战 OPcache + FPM 极限优化配置
  • 3分钟打造专属音乐工作站:BetterNCM安装器让你的网易云音乐焕然一新
  • OpenTTD-patches进阶技巧:调度系统与路线规划优化指南
  • CC2430看门狗与USART外设配置实战:嵌入式系统稳定与通信核心
  • 【Python毕业设计】基于 Python 视觉算法的人脸检测识别系统 图像预处理结合 OpenCV 的人脸识别系统设计(源码+文档+远程调试,全bao定制等)
  • 终极指南:如何在浏览器中实现专业级3D建模?OpenCascade.js完整教程 [特殊字符]
  • 调度系统升级复盘:Crontab → Airflow → Prefect 的三步迭代
  • Vi--终端中的编辑器
  • Windows Defender完全移除指南:3种方法彻底禁用系统安全组件
  • Sol 5.6:基于大语言模型的一键生成研究论文框架实践
  • 可解释性技术中的特征重要性模型解释与可视化
  • 软件可靠性的故障预防与容错设计
  • 一看就懂的ReactJs入门教程-精华版
  • 电磁理论与天线技术
  • 突破性轻量级中文OCR实战:如何用4.7M模型实现跨平台高效文字识别?
  • 【紧急预警】视频自动转写合规风险正在爆发!2024新规下未做这6项脱敏处理的企业已面临法律追责
  • 零基础魔法:三分钟打造你的专属QQ智能助手
  • 基于HarmonyOS的AI菜谱创意生成器——从对齐到评估的全流程技术实践
  • 终极免费大疆无人机固件下载神器:DankDroneDownloader完整指南
  • 让经典MiniDisc焕发新生:Platinum-MD无损音频传输完全指南
  • Leetcode 72.编辑距离
  • 5个实战方案彻底解决Redisson Bloom Filter并发读写异常
  • 嵌入式DSP视频编码优化:硬件扩展指令集在运动估计与像素插值中的应用
  • 电路板对地电阻全解|原理 + 实操 + 故障维修全套教程