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])
}