习题解答仅供参考,欢迎留言拍砖、讨论。
# R语言的科学编程与仿真,第二章笔记与习题解答
#chapter 2
# problem 1
# a
z <- x^(a^b)
# b
z <- (x^a)^b
# c
z <- 3*x^3+2*x^2+6*x+1
# d
#x <- 2.35 用x=2.35可以验证z=5
z <- ((x%%1)%%0.1)%/%0.01
# e
z <- Z+1
# problem 2
# a
c(seq(from=1,to=8,by=1),seq(from=7,to=1,by=-1))
# outcome [1] 1 2 3 4 5 6 7 8 7 6 5 4 3 2 1
# b
c(1,rep(2,2),rep(3,3),rep(4,4),rep(5,5))
# outcome [1] 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5
# c
# 以下四个命令的结果是一致的
matrix(c(0,1,1,1,0,1,1,1,0),nrow = 3,ncol = 3,byrow = T)
matrix(c(0,1,1,1,0,1,1,1,0),nrow = 3,ncol = 3) # byrow 的默认值是FALSE
rbind(c(0,1,1),c(1,0,1),c(1,1,0))
cbind(c(0,1,1),c(1,0,1),c(1,1,0))
# outcome
# [,1] [,2] [,3]
#[1,] 0 1 1
#[2,] 1 0 1
#[3,] 1 1 0
# d
matrix(c(0,2,3,0,5,0,7,0,0),nrow = 3,ncol = 3,byrow = TRUE)
# outcome
# [,1] [,2] [,3]
# [1,] 0 2 3
# [2,] 0 5 0
# [3,] 7 0 0
# problem 3
vec <- c(4,4) # 直角坐标
rho <- sqrt(sum(vec^2)) #极坐标轴长
theta <- acos(vec[2]/rho) #极坐标角度
polarcoordinate <- c(rho,theta) #极坐标
# problem 4
x <- seq(1,100,1)
x1 <- which(x%%2 == 0)
x2 <- which(x%%3 == 0)
x3 <- which(x%%7 == 0)
x[c(-x1,-x2,-x3)]
# 也可以写成一行
x[c(-which(x%%2 == 0),-which(x%%3 == 0),-which(x%%7 == 0))]
# outcome
# [1] 1 5 11 13 17 19 23 25 29 31 37 41 43 47 53 55 59 61 65 67 71 73 79 83 85 89 95 97
# problem 5
queue <- c('Steve','Russell','Alison','Liam') # 初始队列
queue <- c(queue,'Barry') # Barry 来了
queue <- queue[-1] # Steve 完成后离开了
queue <- c('Pam',queue) # Pam 到了最前面
queue <- queue[-5] # Barry 等不及离开了
# Alison 等不及离开了,按照题目要求需要用which函数获取Alison的位置
queue <- queue[-which(queue == 'Alison')]
which(queue == 'Russell')
# problem 6
rm(list = ls())
x <- 1
x[3] <- 3 # 此时x 为 x=[1,NA,3]
y <- c()
# 中文书上为 v[2] <- 2,英文版的为:
y[2] <- 2 # y=y[NA,2]
y[3] <- y[1] # y=y[NA,2,NA]
y[2] <- y[4] # y=y[NA,NA,NA]
z[1] <- 0
# Error in z[1] <- 0 : object 'z' not found