for write.csv函数的循环错误

时间:2016-05-02 20:56:55

标签: r loops for-loop

我是R新手试图写他的第一个剧本。我在for循环中遇到了问题。 在我的代码中,我从2个向量中创建2个列数据帧,共享一个部分通用名称。我使用for循环为这些常用名称(由vector a定义)执行此操作。

paste("A",1:4,sep="")->a    
for ( i in a) {
  j<-grep(x= ls(pos=1), pattern=i, value=TRUE)
  data.frame(do.call(cbind,mget(j)))-> k
  print(k)
}

这有效,但是当我想使用此代码将这些数据框打印为单独的csv文件时,我遇到了问题:

for ( i in a) {
  j<-grep(x= ls(pos=1), pattern=i, value=TRUE)
  data.frame(do.call(cbind,mget(j)))-> k
  print(k)
  write.table (k, file = paste("Results_",i, sep=''))
}

显示的错误如下所示

Error in file(file, ifelse(append, "a", "w")) : 
 invalid 'description' argument
In addition: Warning message:
In if (file == "") file <- stdout() else if (is.character(file)) { :
  the condition has length > 1 and only the first element will be used

此外,fllwing已经有效,但当然只创建了上一次迭代的一个csv文件

for ( i in a) {
j<-grep(x= ls(pos=1), pattern=i, value=TRUE)
data.frame(do.call(cbind,mget(j)))-> ff
print(ff)
write.table (ff, file = "results_df.csv")}

谢谢!

1 个答案:

答案 0 :(得分:0)

文件错误的关键是:

  

文件错误(文件,ifelse(追加,&#34; a&#34;,&#34; w&#34;)):无效   &#39;描述&#39;参数另外:警告消息:在if(file ==   &#34;&#34;)file&lt; - stdout()else if( is.character(file)){:条件   有长度&gt; 1 ,只使用第一个元素

&#39;文件&#39;显然是一个向量而不是一个字符串。

这可能不是唯一的问题。