hypeR icon indicating copy to clipboard operation
hypeR copied to clipboard

rgsets does not support proper object "duplication" by value

Open tetomonti opened this issue 1 year ago • 0 comments

When assigning a rgsets object to a new variable, this variable is only a reference to the old object, not a new one. Here is an example:

# genesets
genesets <- list(
  gset1=c("gene1","gene2","gene3"),
  gset2=c("gene4","gene5","gene6"),
  gset3=c("gene7","gene8","gene9"))
# nodes
nodes <- data.frame(row.names = unlist(genesets),label=unlist(genesets))
## some random edges
edges <- data.frame(
  from = gset1,
  to = gset3)

rgset1 <- hypeR::rgsets$new(genesets=genesets,nodes=nodes,edges=edges,name="test_geneset",version="1.0")

Now, if I assign that object (rgset1) to a new variable (rgset2):

> rgset2 <- rgset1
> rgset2$genesets

$gset1
[1] "gene1" "gene2" "gene3"

$gset2
[1] "gene4" "gene5" "gene6"

$gset3
[1] "gene7" "gene8" "gene9"

And I modify that object

> rgset2$genesets <- rgset1$genesets[1:2]
> rgset2$genesets
$gset1
[1] "gene1" "gene2" "gene3"

$gset2
[1] "gene4" "gene5" "gene6"

This also modifies the original object.

> rgset1$genesets
$gset1
[1] "gene1" "gene2" "gene3"

$gset2
[1] "gene4" "gene5" "gene6"

tetomonti avatar Jan 30 '23 00:01 tetomonti