【问题标题】:Export several vectors to text files将多个矢量导出到文本文件
【发布时间】:2015-08-12 08:17:14
【问题描述】:

我有 100 个向量,每个向量都包含随机数。

矢量1,矢量2,矢量3,矢量4...矢量1000

我想把它们写成几个 .txt 文件,有 100 个不同名称的不同 txt,每个包含一个向量。 我正在尝试使用 for 循环,但尝试时失败了,这就是我长期以来所拥有的:

for (i in 1:100) {
  filename<-paste("textfile", i, ".txt", sep = "")
  writeLines(vector[i], filename)

}

更新: 我的向量是整数,我这样创建它们:

x=1 
While (x < 101)   
{ 
  vectorx<- sample(1:5000,1000, replace = T)
  assign(paste("vector",x,sep=""),vectorx) 
  x=x+1 

}

【问题讨论】:

  • 从您的代码看来,您更像是有一个长度为 100 个数字的向量,而不是 100 个向量。你能做一个str(vector_name) 为我们确认你的变量的结构是什么吗?
  • 失败的原因是什么?
  • 更新了!我失败了,因为在 writelines 之后写“vector[i]”,并不意味着它会先写出vector1,然后是vector2,然后是vector3,等等。
  • 抛开你的问题,我强烈建议使用矩阵而不是创建 100 个不同的变量。

标签: r


【解决方案1】:

可能有更好的方法可以做到这一点,但您可以尝试对代码进行最少的修改

for (i in 1:100) {
 filename <- paste0("textfile", i, ".txt")
 writeLines(as.character(get(paste0("vector",i))), filename)
}

【讨论】:

    【解决方案2】:

    不完全是您问题的答案,但可能是您问题的解决方案:

    # create an empty list
    x <- NULL
    
    # fill it with the random samples you want to create
    for( i in 1:100 ) x[[ i ]] <- sample( 1:5000, 1000, replace = TRUE )
    
    # write each sample to a file
    for( i in 1:100 ) cat( x[[ i ]], file = paste( "vector", i, ".txt", sep = "" ) )
    

    显然,您可以结合最后两个步骤,创建一个样本并立即将其写入文件:

    for( i in 1:100 )
    {
      x[[ i ]] <- sample( 1:5000, 1000, replace = TRUE )
      cat( x[[ i ]], file = paste( "vector", i, ".txt", sep = "" ) )
    }
    

    【讨论】:

      【解决方案3】:

      试试这个

      # We have to use **get** for bringing the value out of the variable
      for (i in 1:10) 
      {
        filename<-paste("textfile", i, ".txt", sep = "")
        writeLines(get(paste("vector",i,sep="")), filename)
      }
      

      【讨论】:

      • 这个看起来很像@RHertel 的答案,它似乎也没有遍历paste() 调用中的向量。它有1 而不是i。我错过了什么吗?
      • 是的,它应该是“i”而不是 1。对不起。我已经编辑了
      猜你喜欢
      • 1970-01-01
      • 2018-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多