编辑代码

# 1
A <- matrix(c(1, 2, 1, 3, 1, 0, 0, 2, 1), nrow = 3,ncol = 3)
A
b <- as.matrix(c(1, 3, 2))
b
A %*% b
solve(A)
t(A)
t(b) %*% A %*% b

#2
c <- rbind(A, c(5, 6, 7))
c
C <- cbind(c,matrix(c(3,9,4,2)))
c
d <- matrix(c(b, 5))
d

#3
setwd("C:/R语言")
dat_1 <- read.csv("D01+实验一数据.csv")
dat_1
dat_2 <- data.frame(id = 1:nrow(esoph), esoph)
dat_2

#4
#方法一
dat <- merge(dat_1,dat_2)
dat
rm(dat_1,dat_2)
#方法二
install.packages("dplyr")
library(dplyr)
dat <- inner_join(dat_1,dat_2,by="id")
dat
rm(dat_1,dat_2)

#5
#方法一
install.packages("sqldf")
library(sqldf)
dat_3 <- sqldf("SELECT tobgp,AVG(ncontrols) AS mean_ncontrols,STDEV(ncontrols) AS sd_ncontrols
               FROM dat
               WHERE (agegp = '25-34' OR agegp = '35-44') AND ncases > 0
               GROUP BY tobgp
               HAVING tobgp <> '30+' ")
dat_3
#方法二
library(dplyr)
dat_3 <- filter(summarise(group_by(filter(dat,(agegp == '25-34' | agegp == '35-44') & ncases > 0),tobgp)
              mean_ncontrols = mean(ncontrols),
              sd_ncontrols = sd(ncontrols)),tobgp != '30+')
dat_3

#6
sum <- 0
for (i in 0:10){
  sum <- sum + (1.1 + .2*i)/(1.1^i)
}
print(sum)

#7
firstLast_1 <- function(x){
  if(length(x) == 1){
    cat("向量的第一个和最后一个值相同")
    return(x)
  }
  else return("第一个值",c(x[1]),"最后一个值",c(x[length(f)]))
}

#8
firstLast_2 <- function(y){
  if(length(y) == 1){
    cat("向量长度为1,向量是",y)
  }else return("向量长度不为1")
}

#9
firstLast_3 <- function(z){
  if(all(z) < 0)
    cat("向量的所有值都小于0")
}

#10
firstLast_4 <- function(w){
  if(any(is.na(w)))
    return(c(h[1],w[length(w)],sum(is.na(w))))
}
firstLast_4(c(1:4,NA))