[R] how can i make my program faster
Adaikalavan Ramasamy
ramasamy at cancer.org.uk
Mon Feb 14 12:22:36 CET 2005
On Sun, 2005-02-13 at 20:53 -0800, Cuichang Zhao wrote:
> Hello,
> right now, i have a program to collect data into a table. right now, my table is
> table1 <- data.frame(trial = NA, x = NA, y = NA)
One often uses the term 'table' as in tabulate or cross-tabulate
discrete values.
> for each time when i want to add data into my data, i have to copy data of table into an array for each column, and then i add new data into my array, then i copy my array into the table one column by one column. For example
> temptrial <- table1$trial;
> temptrial <- c(temptrial, "1, 2");
> tempx <- table1$x;
> tempx <- c(tempx, "1, 2");
> tempy <- table1$y;
> tempy <- c(tempy, "1, 2");
>
> table1 <- data.frame(trial = temptrial, x = tempx, y = tempy);
I am not exactly sure what you are trying to do, but here is one way to
achieve the same results.
df <- data.frame(trial=NA, x=NA, y=NA)
rbind( df, "1, 2" )
trial x y
1 <NA> <NA> <NA>
2 1, 2 1, 2 1, 2
Note that R will recycle an element such as "1, 2". See if the following
example helps
set.seed(1)
output <- matrix(nc=2, nr=5)
for(i in 1:5){
x <- sample(0:1, 100, replace=T) # simulate data
output[i, ] <- c( table(x) )
}
output
[,1] [,2]
[1,] 52 48
[2,] 46 54
[3,] 62 38
[4,] 57 43
[5,] 53 47
You can do the same for a cross-table where you flatten a table into a
vector using c() before inserting it into a the pre-fabricated output
matrix.
> the way i am doing makes my program very slow, because i need to copy the data from one variable to another variable all the time. however, it should not be necessary, so i am just wasting the memory, can any one tell me how can i make my program run faster without copying temparary data all the time.
>
> Also, i have to write this table in a file using "cat", however, "cat" does not support the table format, so i can't do it. could any one also tell me how can i write my data into an outfile.
What do you mean by cat() does not support table format ?
Have you tried sink() or write.table() ? Here are some examples
sink(file="R_sink.txt")
table(x, y)
sink("")
write.table( table(x, y), row.names=FALSE, file="R_table.txt" )
> Thank you so much
>
> C-Ming
>
> Feb 13, 2005
>
>
> ---------------------------------
>
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>
More information about the R-help
mailing list