Feature Request: Use of sep2=''

Open
#5,414 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
35/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Stale
Tech stack
r
Domain
data

Research direction

Start by reproducing the fwrite call with sep2 = c("","","") and read the ?fwrite documentation around the single-character constraint. Trace the fwrite entry point to determine where sep2[2] is validated. Done means the requested input is accepted and produces the two-column output with SNP values concatenated without separators.

Written by the indexing model from the issue text.

Description

feature request fwrite help-wanted

Hello

Is there any reason why sep2='' is not allowed in fwrite?

Several R packages are used to manipulate genomic data (such as SNP) and do a good job filtering out those with bad quality. However, when comes to performing genomic analyses to estimate "Breeding Values" for example, on large scale, we have to do that outside of R. A common layout when writing the SNP to a file is the following, where the first column is the individual identification and the second is the SNP (where all SNPs are collapsed without any space between them).

data.table is the fastest package I've benchmarked to read, write, and filter rows/columns. Because of that, I wonder if there is any way to use sep2='', as shown in the following example.

library("data.table")
geno <- data.table(
  IID = 1:10,
  SNP = lapply(1:10, function(i) sample(0:2, 10, replace = TRUE))
)

According to ?fwrite, sep2[2] must be a single character. Therefore I have to collapse the list, rather than use sep2. Hence, if I try to run fwrite(geno, "Geno.txt", col.names = FALSE, sep = " ", sep2 = c("","","")) I get the following error message:

Error in fwrite(geno, "Geno.txt", col.names = FALSE, row.names = FALSE,  : 
  is.character(sep2) && length(sep2) == 3L && nchar(sep2[2L]) ==  .... is not TRUE

I would like to have the following result, without having to collapse all values before writing it to a file.

1 2221210202
2 0020010221
3 1010022212
4 0120121221
5 1212211202
6 2100002010
7 1110011210
8 1212012121
9 2221121021
10 1122220101

Thank you.

Dominant language
R
Stars
3.9k
Forks
1.1k
Avg merge
14h 4m
Merged PRs (30d)
4

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from Rdatatable/data.table

All issues in Rdatatable/data.table

Similar issues

More R issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.