An error when accessing the table using a long vector of column names (ds.subset, ds.rbind and ds.merge)

Hi DS members,

I met an error when I am calling functions ds.subset(), ds.rbind() and ds.merge(). In these callings, I attemped to operate the columns by assigning the column names. The error ocupied when the number of columns are over 2000. All errors reported the same message, thus they are suggested to belong to the same issue.

See the example:

Here is my logindata, table expXY has 17k columns (first 5 are phenotypes, the rest are genes). This data is public, I could share with you for test.

my_logindata
              server                        url          user         password       table
1 dstesting-100-base http://192.168.56.100:8080 administrator datashield_test& Hank.expXY2
2 dstesting-101-base http://192.168.56.101:8080 administrator datashield_test& Hank.expXY1

Step 1, connect to server

opals <- datashield.login(logins=my_logindata, assign=TRUE, symbol="expXY")

Step 2, get column names

feats=ds.colnames("expXY")[[1]]
genes=feats[-(1:5)]

Step 3.1, test ds.subset ()

ds.subset("expXY", subset = "r", cols = genes)
Error: dstesting-100-base: Bad Request (400)

Step 3.2, test ds.rbind ()

> ds.rbind(c("expXY", "expXY"), force.colnames =feats, newobj = "r" )
Error: dstesting-100-base: Bad Request (400)

Step 3.2, test ds.merge ()

ds.merge(x.name = "expXY", y.name = "expXY", by.x.names = feats, by.y.names = feats, newobj = "r")
Error: dstesting-100-base: Bad Request (400)

Regards,

Hank

Ah! This work is about genes/phenotypes. In which case, it might be best to wait for the new dsOmics package that might help with this. Unless @yannick has another idea?

See also my other reply here: An error when applying glm in Foreach and doParallel

Hi Hank,

Can you please first check that the expXY datasets have been assigned correctly and have the correct dimensions? Then for step 3.2 you can try to use the new ds.dataFrameSubset function instead of the old ds.subset.