R语言练习题

本文介绍了R语言中向量的合并规则,展示了数值、逻辑、复数和字符类型向量如何相互合并,并探讨了合并后的数据类型。同时,通过编程实例展示了分段函数的实现,以及生成特定年龄分布、矩阵操作和数据统计的方法。此外,还运用了R内置数据集mtcars,计算了其中特定列的长度、平均值和标准差。
摘要由CSDN通过智能技术生成

R语言练习题

第一题:合并不同数据类型的向量,并告诉我向量合并后的数据类型是什么。

double <- c(1,2,3)
logical <- c(TRUE,FALSE,TRUE)
x <- 3
y <- 4
complex <- complex(re=x,im=y)
character <- c("ad","asfda","地方撒")
d_l <- c(double,logical);d_l;print("double and logical :  ");typeof(d_l)
d_co <- c(double,complex);d_co;print("double and complex :  ");typeof(d_co)
d_ch <- c(double,character);d_ch;print("double and character :  ");typeof(d_ch)
l_co <- c(logical,complex);l_co;print("logical and complex :  ");typeof(l_co)
l_ch <- c(logical,character);l_ch;print("logical and character :  ");typeof(l_ch)
co_ch <- c(complex,character);co_ch;print("complex amd character :  ");typeof(co_ch)

代码运行结果
[1] 1 2 3 1 0 1
[1] "double and logical :  "
[1] "double"
[1] 1+0i 2+0i 3+0i 3+4i
[1] "double and complex :  "
[1] "complex"
[1] "1"      "2"      "3"      "ad"    
[5] "asfda"  "地方撒"
[1] "double and character :  "
[1] "character"
[1] 1+0i 0+0i 1+0i 3+4i
[1] "logical and complex :  "
[1] "complex"
[1] "TRUE"   "FALSE"  "TRUE"   "ad"    
[5] "asfda"  "地方撒"
[1] "logical and character :  "
[1] "character"
[1] "3+4i"   "ad"     "asfda"  "地方撒"
[1] "complex amd character :  "
[1] "character"
结论

由上面代码的运行结果可以知道:
数值型和逻辑型 = 数值型
数值型和复数型 = 复数型
数值型和字符型 = 字符型
逻辑型和复数型 = 复数型
逻辑性和字符型 = 字符型
复数型和字符型 = 字符型
通过上面的结论我们可以看到:
数值<逻辑<复数<字符

第二题:x是-1到1之间均匀分布的长度为100的向量。请写程序定义一个关于x的分段函数y,满足: y = { 1 − x , x < 0 1 + x , x ≥ 0 y=\begin{cases}1-x,\quad x<0\\1+x,\quad x\ge0\end{cases} y={1x,x<01+x,x0

x <- seq(-1,1,length=100)
print("x:")
x
y <- 1:100
# 要提前定义y
for(i in 1:100)
{if(x[i]<0)
  y[i] <- 1-x[i] else
  y[i] <- 1+x[i]
}
print("y:")
y
代码运行结果
[1] "x:"
  [1] -1.00000000 -0.97979798 -0.95959596 -0.93939394 -0.91919192 -0.89898990 -0.87878788
  [8] -0.85858586 -0.83838384 -0.81818182 -0.79797980 -0.77777778 -0.75757576 -0.73737374
 [15] -0.71717172 -0.69696970 -0.67676768 -0.65656566 -0.63636364 -0.61616162 -0.59595960
 [22] -0.57575758 -0.55555556 -0.53535354 -0.51515152 -0.49494949 -0.47474747 -0.45454545
 [29] -0.43434343 -0.41414141 -0.39393939 -0.37373737 -0.35353535 -0.33333333 -0.31313131
 [36] -0.29292929 -0.27272727 -0.25252525 -0.23232323 -0.21212121 -0.19191919 -0.17171717
 [43] -0.15151515 -0.13131313 -0.11111111 -0.09090909 -0.07070707 -0.05050505 -0.03030303
 [50] -0.01010101  0.01010101  0.03030303  0.05050505  0.07070707  0.09090909  0.11111111
 [57]  0.13131313  0.15151515  0.17171717  0.19191919  0.21212121  0.23232323  0.25252525
 [64]  0.27272727  0.29292929  0.31313131  0.33333333  0.35353535  0.37373737  0.39393939
 [71]  0.41414141  0.43434343  0.45454545  0.47474747  0.49494949  0.51515152  0.53535354
 [78]  0.55555556  0.57575758  0.59595960  0.61616162  0.63636364  0.65656566  0.67676768
 [85]  0.69696970  0.71717172  0.73737374  0.75757576  0.77777778  0.79797980  0.81818182
 [92]  0.83838384  0.85858586  0.87878788  0.89898990  0.91919192  0.93939394  0.95959596
 [99]  0.97979798  1.00000000
[1] "y:"
  [1] 2.000000 1.979798 1.959596 1.939394 1.919192 1.898990 1.878788 1.858586 1.838384
 [10] 1.818182 1.797980 1.777778 1.757576 1.737374 1.717172 1.696970 1.676768 1.656566
 [19] 1.636364 1.616162 1.595960 1.575758 1.555556 1.535354 1.515152 1.494949 1.474747
 [28] 1.454545 1.434343 1.414141 1.393939 1.373737 1.353535 1.333333 1.313131 1.292929
 [37] 1.272727 1.252525 1.232323 1.212121 1.191919 1.171717 1.151515 1.131313 1.111111
 [46] 1.090909 1.070707 1.050505 1.030303 1.010101 1.010101 1.030303 1.050505 1.070707
 [55] 1.090909 1.111111 1.131313 1.151515 1.171717 1.191919 1.212121 1.232323 1.252525
 [64] 1.272727 1.292929 1.313131 1.333333 1.353535 1.373737 1.393939 1.414141 1.434343
 [73] 1.454545 1.474747 1.494949 1.515152 1.535354 1.555556 1.575758 1.595960 1.616162
 [82] 1.636364 1.656566 1.676768 1.696970 1.717172 1.737374 1.757576 1.777778 1.797980
 [91] 1.818182 1.838384 1.858586 1.878788 1.898990 1.919192 1.939394 1.959596 1.979798
[100] 2.000000

第三题:写程序定义变量ages,表示100个20~70岁的成年人年龄,并以每10岁作为区间,统计各个年龄段的人数。

options(digits=1)
ages <- runif(100,20,70)
print("ages:")
ages
ages_factor <- cut(ages,breaks=c(19,30,40,50,60,70))
table(ages_factor)
代码运行结果
[1] "ages:"
  [1] 64 52 56 28 52 67 27 56 38 34 55 50 61 55 56 57 46 24 23 48 66 52 46 27 55 37 60 50 35
 [30] 36 26 45 52 64 50 49 62 43 46 30 58 56 23 26 54 25 68 50 31 58 65 62 51 28 38 53 49 56
 [59] 55 53 20 65 31 37 55 54 38 53 26 63 24 21 20 53 38 31 40 64 40 24 38 22 60 55 44 31 70
 [88] 54 28 27 48 69 39 27 26 21 24 51 54 34
ages_factor
(19,30] (30,40] (40,50] (50,60] (60,70] 
     23      18      14      30      15 

第四题:写程序生成20×20的单位矩阵和对角线上分别为1:20的对角矩阵。

eye <- diag(20)
print("20*20的单位矩阵:")
eye
eye_special <- diag(1:20,20)
print("对角线上分别为1:20的对角矩阵:")
eye_special
代码运行结果

在这里插入图片描述

在这里插入图片描述

第五题:写程序生成如下矩阵 [ N A 9 17 25 3 N A 19 27 5 13 N A 29 7 15 23 N A ] \left[\begin{array}{cccc}NA&9&17&25\\3&NA&19&27\\5&13&NA&29\\7&15&23&NA\end{array}\right] NA3579NA13151719NA23252729NA,并用apply命令按列进行求和。

num <- seq(1,31,by=2)
f_m <- matrix(num,4)
f_m
i=1
for(i in 1:4)
{
  f_m[i,i]=NA
}
print("要求的矩阵")
f_m
apply(f_m,2,sum,na.rm=T)
代码运行结果
     [,1] [,2] [,3] [,4]
[1,]    1    9   17   25
[2,]    3   11   19   27
[3,]    5   13   21   29
[4,]    7   15   23   31
[1] "要求的矩阵"
     [,1] [,2] [,3] [,4]
[1,]   NA    9   17   25
[2,]    3   NA   19   27
[3,]    5   13   NA   29
[4,]    7   15   23   NA
[1] 15 37 59 81

第六题:利用R内部mtcars数据,计算mpg, cyl和hp列数据的长度(length)、平 均值(mean)及标准差(sd)。


print("mpg列数据的长度")
length(mtcars$mpg)
print("cyl列数据的长度")
length(mtcars$cyl)
print("hp列数据的长度")
length(mtcars$hp)
print("mpg列数据的平均值")
mean(mtcars$mpg)
print("cyl列数据的平均值")
mean(mtcars$cyl)
print("hp列数据的平均值")
mean(mtcars$hp)
print("mpg列数据的标准差")
sd(mtcars$mpg)
print("cyl列数据的标准差")
sd(mtcars$cyl)
print("hp列数据的标准差")
sd(mtcars$hp)
代码运行结果
[1] "mpg列数据的长度"
[1] 32
[1] "cyl列数据的长度"
[1] 32
[1] "hp列数据的长度"
[1] 32
[1] "mpg列数据的平均值"
[1] 20
[1] "cyl列数据的平均值"
[1] 6
[1] "hp列数据的平均值"
[1] 147
[1] "mpg列数据的标准差"
[1] 6
[1] "cyl列数据的标准差"
[1] 2
[1] "hp列数据的标准差"
[1] 69
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值