Hello,

You don't need a new function, what you need is to prepare your data in such a way that the function can process it.


A <- c("percent (10/20/30)", "percent (40/20)", "percent (60/10/10/5)",
"percent (80/10)")
B <- gsub("\\(|\\)|percent| ", "", A)
fun(B)

Also, please use dput to post the data examples,

dput(A)
c("percent (10/20/30)", "percent (40/20)", "percent (60/10/10/5)",
"percent (80/10)")

Then copy&paste in your post.

Rui Barradas

Em 02-09-2012 04:22, Sapana Lohani escreveu:
Dear Rui,

The new code works fine for what I wanted. I have another similar column but it 
looks like

A
percent (10/20/30)
percent (40/20)
percent (60/10/10/5)
percent (80/10)

I want a similar split but delete the percent in the front. The output should 
look like

A1 A2 A3 A4
10 20 0 30
40 0 0 20
60 10 10 5
80 0 0 10

Could you please make the small change in the code that you gave me. It must be 
a small edition but I could not figure that out. FYI the code that worked was

fun <- function(X){
      xname <- deparse(substitute(X))
      s <- strsplit(X, "/")
      n <- max(sapply(s, length))
      tmp <- numeric(n)

      f <- function(x){
          x <- as.numeric(x)
          m <- length(x)
          if(m > 1){
              tmp[n] <- x[m]
              tmp[seq_len(m - 1)] <- x[seq_len(m - 1)]
          }else tmp[1] <- x
          tmp
      }

      res <- do.call(rbind, lapply(s, f))
      colnames(res) <- paste(xname, seq_along(s), sep = "")
      data.frame(res)
}

fun(A)

Thank you so very much.

______________________________________________
R-help@r-project.org mailing list
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.

Reply via email to