[R] A function that can modify an object? Or at least shows principles how to modify an object?

Rui Barradas ruipbarradas at sapo.pt
Thu May 16 19:07:21 CEST 2013


Hello,

Sorry, there's an error in fun2. Corrected:

fun2 <- function(x, what, map, value){
	y <- x[[what]]
	i1 <- seq_len(map - 1)
	i2 <- seq_len(nrow(y))[-i1]
	x[[what]] <- rbind(y[i1, ], value, y[i2, ])
	x
}

Rui Barradas

Em 16-05-2013 17:54, Rui Barradas escreveu:
> Hello,
>
> If I understood it correctly, the following should do it.
>
>
> fun1 <- function(x, what, map, value){
>      y <- x[[what]]
>      i1 <- seq_len(map - 1)
>      i2 <- seq_along(y)[-i1]
>      x[[what]] <- c(y[i1], value, y[i2])
>      x
> }
> fun2 <- function(x, what, map, value){
>      y <- x[[what]]
>      i1 <- seq_len(map - 1)
>      i2 <- seq_along(y)[-i1]
>      x[[what]] <- rbind(y[i1, ], value, y[i2, ])
>      x
> }
>
> map <- UUU$my.table["bbb8888", "map"]  # Not sure about this
> UUU[2] <- fun1(UUU[2], "scores", map, NA)
> UUU[2] <- fun2(UUU[2], "cov", map, c(1, 1, 1))
> UUU[2] <- fun1(UUU[2], "maf", map, 0)
>
>
>
>
> Note however that it is not tested, since the example you've given is
> not very easy to recreate. Use ?dput to post data examples.
>
> dput(UUU[2])  # paste the output of this in a post
>
>
> Hope this helps,
>
> Rui Barradas
>
> Em 16-05-2013 17:23, Aldi escreveu:
>> Hi, If I have an R object UUU, where the second element is U2, based on
>> "g" column of my.table
>>
>> my.table of UUU is:
>> mmm         ggg   gindex   map       Info
>> aaa123      U1       1           1             1
>> aaa124      U1       1           2             1
>> bbb1378     U2       2           1             1
>> bbb8888     U2       2           2             0
>> bbb1389     U2       2           3             1
>> ccc2222     Z3       3           1             1
>> ccc33333    Z3       3           2             0
>> ccc4444     Z3       3           3             1
>> ccc55555    Z3       3           4             0
>>
>> Before (see Before) the analysis I had dropped those "mmm" rows from
>> my.table of UUU that had Info==0, thus not included in the analysis.
>> After (see After) analysis found that I need to add bbb8888 (in the
>> second position, as defined by map) for U2, ccc3333 and ccc5555 for Z3
>> and s.o.
>> The bbb8888, does not have any info in general, but a collaborator is
>> saying that he needs the bbb8888 for documentation in the UUU object.
>> A solution is to rerun the analysis, but the list is very long, the
>> analysis will take 1 day. Is there any ready function that can modify an
>> object? Or at least shows principles how to modify an object?
>> I have labeled elements of U2 as (e) which needs an NA in the second
>> position; (d) needs a name bbb8888 as a second column and as a second
>> row and correspondingly in its rows and columns use value 1.0; NO change
>> for (c); adding 0.0 in the second position for (b); and NO change for
>> (a). (see After) Thank you in advance, Aldi
>>
>> Before:
>> =======
>>   > UUU[2]
>> $U2
>> $U1$scores (e)
>> [1]  -1.946707 -57.970488
>>
>> $U2$cov (d)
>>                           bbb1378       bbb1379
>> bbb1378  1.10362564 -0.01222695
>> bbb1379 -0.01222695 26.88805020
>>
>> $U2$n (c)
>> [1] 1802
>>
>> $U1$maf   (b)
>> [1] 0.0002774695 0.0077691454
>>
>> $U2$sey (a)
>> [1] 13.3867
>>
>> After:
>> =====
>>   > UUU[2]
>> $U2
>> $U2$scores (e)
>> [1]  -1.946707 NA -57.970488
>>
>> $U2$cov (d)
>>                           bbb1378  bbb8888     bbb1379
>> bbb1378  1.10362564  1.0  -0.01222695
>> bbb8888  1.0  1.0  1.0
>> bbb1379 -0.01222695  1.0  26.88805020
>>
>> $U2$n (c)
>> [1] 1802
>>
>> $U2$maf   (b)
>> [1] 0.0002774695  0.0  0.0077691454
>>
>> $U2$sey (a)
>> [1] 13.3867
>>
>
> ______________________________________________
> 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