R语言之for循环

注:来源为李东风R语言教程
使用for循环的注意事项:
如果对向量每个元素遍历并保存结果, 应在循环之前先将结果变量产生等长的存储, 在循环内为已经分配好存储空间的输出向量的元素赋值。 为了产生长度为n的数值型向量,用numeric(n); 为了产生长度为n的列表,用vector(“list”, n)。
对一个向量元素遍历时如果用下标访问, 需要用seq_along(x)的做法而不是1:length(x)的做法。
如果直接对向量元素遍历, 这有可能会丢失向量的属性(如日期型), 用下标访问则不存在此问题

x <- c(0.2,0.4,0.9,0.9)
seq_along(x)#按照向量下标进行循环
[1] 1 2 3 4
set.seed(106)
x <- rnorm(5)
y <- numeric(length(x))
for(i in 1:5){
  if(x[i]>=0){
    y[i] <- 8}else{
      y [i] <- 7}
}
print(y)
x <- 0;s <- 0;n <- 5;
for(i in 1:n){
  x <- 2*x+3
  s <- s+x
}
s
#if(条件){表达式}else{表达式}
#注意/*,/%,/&均为字符后面直接紧接
x <- c(0.2,0.3,0.9)
for(i in seq(along=x)){
  if(x[i]<=0.25){
    cat("我/*")
  }else if(x[i]<=0.35){
    cat("爱/*")
  }else{
    cat("你/*")
  }
}
#注意/n后面紧跟符号的用法
x <- c(0.2,0.3,0.9)
for(i in seq(along=x)){
  if(x[i]<=0.25){
    cat("我\n")
  }else if(x[i]<=0.35){
    cat("爱\n*")
  }else{
    cat("你\n$")
  }
}
#注意1:seq_along(x)与直接seq_along(x)的区别
x <- c(0.2,0.2,0.3)
for(i in seq(along=x)){
  print(x[i])
}
x <- c(0.2,0.2,0.3)
for(i in 1:seq(along=x)){
  print(x[i])
}