[Bioc-devel] DataFrame: replacement error
Ludwig Geistlinger
Ludw|g@Ge|@t||nger @end|ng |rom @ph@cuny@edu
Mon Apr 1 21:00:44 CEST 2019
I have a SummarizedExperiment with putatively user-annoted rowData.
I have a function that does computation on this SE and appends
the results to the rowData.
When (repeatedly) called on the SE, the function just overwrites / replaces already existing columns.
In R release and S4Vectors_0.20.1
> sessionInfo()
R version 3.5.2 (2018-12-20)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Mojave 10.14.3
Matrix products: default
BLAS: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] parallel stats4 stats graphics grDevices utils datasets
[8] methods base
other attached packages:
[1] S4Vectors_0.20.1 BiocGenerics_0.28.0
loaded via a namespace (and not attached):
[1] compiler_3.5.2
this works:
# my rowData
> d <- DataFrame(a=c(1,2), b=c(3,4), c=c(5,6))
DataFrame with 2 rows and 3 columns
a b c
<numeric> <numeric> <numeric>
1 1 3 5
2 2 4 6
# output of my function
> d2 <- DataFrame(b=c(7,8), c=c(9,10), d=c(11,12))
DataFrame with 2 rows and 3 columns
b c d
<numeric> <numeric> <numeric>
1 7 9 11
2 8 10 12
# replace and simultaneously append
> d[,colnames(d2)] <- d2
> d
DataFrame with 2 rows and 4 columns
a b c d
<numeric> <numeric> <numeric> <numeric>
1 1 7 9 11
2 2 8 10 12
However, using R-devel and S4Vectors_0.21.20
> sessionInfo()
R Under development (unstable) (2019-01-18 r75994)
Platform: x86_64-apple-darwin18.2.0 (64-bit)
Running under: macOS Mojave 10.14.3
Matrix products: default
BLAS: /Users/ludwig/Downloads/R-devel/lib/libRblas.dylib
LAPACK: /Users/ludwig/Downloads/R-devel/lib/libRlapack.dylib
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] parallel stats4 stats graphics grDevices utils datasets
[8] methods base
other attached packages:
[1] S4Vectors_0.21.20 BiocGenerics_0.29.2
loaded via a namespace (and not attached):
[1] compiler_3.6.0
The same replacement operation causes an error
> d[,colnames(d2)] <- d2
Error in names(x using listData) <- value :
'names' attribute [3] must be the same length as the vector [1]
For data.frame, this still works in R-devel:
> dd <- as.data.frame(d)
> dd2 <- as.data.frame(d2)
> dd[,colnames(dd2)] <- dd2
> dd
a b c d
1 1 7 9 11
2 2 8 10 12
How to best address this issue?
--
Dr. Ludwig Geistlinger
CUNY School of Public Health
[[alternative HTML version deleted]]
More information about the Bioc-devel
mailing list