[R] function using values separated by a comma

Jeffrey Spies jspies at virginia.edu
Fri Oct 8 17:47:45 CEST 2010


Here's another method without using any external regular expression libraries:

dat <- read.table(tc <- textConnection(
'0,1 1,3 40,10 0,0
20,5 4,2 10,40 10,0
0,11 1,2 120,10 0,0'), sep="")

mat <- apply(dat, c(1,2), function(x){
	temp <- as.numeric(unlist(strsplit(x, ',')))
	min(temp)/sum(temp)
})

For mat[2,4], I get 0 (as did the other solutions), and you get 1, so
check on that. If you want the divide-by-0 NaNs to be 0, you can check
that by replacing

min(temp)/sum(temp)

with:

ifelse(is.nan(val<-min(temp)/sum(temp)), 0, val)

This has an advantage over:

mat[is.na(mat)] <- 0

in that you might have true missingness in your data and is.na won't
be able to distinguish it.

Cheers,

Jeff.

On Fri, Oct 8, 2010 at 1:19 AM, burgundy <sauburn at yahoo.com> wrote:
>
> Hello,
>
> I have a dataframe (tab separated file) which looks like the example below -
> two values separated by a comma, and tab separation between each of these.
>
>     [,1]  [,2]  [,3]  [ ,4]
> [1,] 0,1  1,3   40,10  0,0
> [2,] 20,5  4,2  10,40  10,0
> [3,] 0,11  1,2  120,10  0,0
>
> I would like to calculate the percentage of the smallest number separated by
> the comma by:
> 1) summing the values e.g. for [1,3] where 40,10, 40+10 = 50
> 2) taking the first value and dividing it by the total e.g. for [1,3], 40/50
> = 0.8
> 3) where the value generated by 2) is >0.5, print 1-value, otherwise, leave
> value e.g. for [1,3], where value is 0.8, print 1-0.8 = 0.2
>
> plan to generate file like:
>
>    [,1]  [,2]  [,3]  [,4]
> [1,] 1   0.25  0.2  0
> [2,] 0.2  0.33  0.2  1
> [3,] 1  0.33  0.08  0
>
> Apologies, I know this is very complex. Any help, even just some pointers on
> how to write a general function where values are separated by a comma, is
> realy very much appreciated!
>
> Thank you
>
> --
> View this message in context: http://r.789695.n4.nabble.com/function-using-values-separated-by-a-comma-tp2967870p2967870.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> R-help at 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.
>



More information about the R-help mailing list