R语言中无法循环生成向量名的解决方法

2020-08-12  本文已影响0人  黄海菌

R语言中有时需要在循环中生成一个向量,之后再把每一个循环的结果组成一个数据框。这个过程中可能遇到一个问题:向量生成方法只有x<-c(),没有name=xxx之类的参数,无法用paste0之类的函数循环生成多个不同名子的向量,这就造成了新的向量会覆盖掉旧的向量。这里提供几个可行的解决方法:

  1. 生成一个list,通过list[[i]]<-c()保存变量,之后再用as.data.frame()转化为数据框,例如:
x1 <- list()
for (i in (1:10)){
  a <- c(rep(1,i-1),i:11)
  x1[[i]] <- a
}
x2 <- as.data.frame(x1)  
  1. 提前生成一个向量和数据框,之后每个循环都用rbind()或cbind()合并,这样最后也能得到一个数据框

  2. 提前预估生成的数据长宽,用matrix()生成一个全是NA的矩阵,转化成dataframe,然后赋值

    (不直接对dataframe赋值是因为dataframe$i <-vector会报错,因为你生成的空dataframe跟输入的向量行数不同)
    例如:

df1 <- data.frame(matrix(NA,nrow = 11,ncol = 11))
x1 <- list()
for (i in (1:10)){
  a <- c(rep(1,i-1),i:11)
  df1[i,] <- a
}
  1. 用write.csv()或者save()等函数保存下来,这些函数是有filename=“”之类的命名参数的,之后再批量读取
上一篇 下一篇

猜你喜欢

热点阅读