获取字符向量并将观察结果保存到R中的文本文件中

时间:2013-10-13 22:06:52

标签: string r file export

我在R中有一个字符向量,(名为q2),其中每个观察是一个人对调查中的开放式问题的回答。简而言之,我如何告诉R将每个人的回复保存为文本文件?例如,“file01.txt”“file02.txt”等所有情况?

是否有比这更有效或更好的方式?

for(i in 1:length(q2)) {
    filename <- paste("file",i,".txt", sep="")
    writeLines(as.character(q2[i]), con=filename) 
}

2 个答案:

答案 0 :(得分:2)

所以R中的“一般规则”是避免编写循环,但是你不需要盲目地遵循这个规则。避免循环的原因是循环效率低,因为迭代R中的循环需要大量的解释机制。但是,这只有在循环的实际内容可以非常快速地执行时才真正重要,在这种情况下,迭代将成为瓶颈。例如,您永远不想通过编写

将两个向量添加到一起
for(i in 1:length(x))
   z[i]<-x[i]+y[i]

但是,在您的情况下,循环体需要打开文件并写入文件,这些操作将比迭代花费更长的时间。因此,在这种情况下,使用循环很好,并且没有理由尝试进一步优化它。

答案 1 :(得分:2)

您可以做的一件事是从循环中删除filenames的创建,因为paste可以进行矢量化:

    #simulation of your data
    q2 <- sample(c("yes", "no", "maybe", "idk", "nevermind"), 20, T)

    #names of potential ".txt"s. ("formatC" is used to add a leading "0")
    filenames <- paste("file", formatC(1:length(q2), digits = 1, flag = "0"), ".txt", sep = "")

    #set working directory to write the files
    setwd("C:/Desktop/myfiles")

    #the loop
    for(i in 1:length(q2))
     {
      write(q2[i], file = filenames[i])
     }