[R] a question on write.table

David Winsemius dwinsemius at comcast.net
Mon Sep 28 20:39:08 CEST 2015


On Sep 28, 2015, at 11:31 AM, Antonio Silva wrote:

> Dear R users
> 
> I want to write a file that contains several data frames generated in a loop
> ing.
> I also want the column names be written to file only when it is created in
> first loop.
> 
> In the example below, when I run each line separately without "for (i in
> ...) { }"  it works, but when I run the looping I get an error message
> 
> X<-c("A","B","C","D","E")
> Y<-c(0,1,2,3,4)
> 
> for (i in 0:3) {
> Y<-Y+i
> data<-data.frame(X,Y)
> ifelse(file.exists("test.csv"),
> write.table(data,"test.csv",row.names =
> FALSE,col.names=FALSE,sep=";",append=TRUE),
> write.table(data,"test.csv",row.names = FALSE,sep=";")

The basic problem is that you are using ifelse(test , cons , alt) when you should be using if(test){cons}else{alt}

`ifelse` will evaluate both cons and alt. You don't want that to happen.

-- 
David.


> )}
> 
> Error in ifelse(file.exists("test.csv"), write.table(data, "test.csv",  :
>  substituto tem comprimento zero
> Além disso: Warning message:
> In rep(yes, length.out = length(ans)) :
>  'x' is NULL so the result will be NULL
> 
> What is going wrong here? Thanks for any comments or suggestions.
> 
> All the best.
> 
> Antonio Olinto
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

David Winsemius
Alameda, CA, USA



More information about the R-help mailing list