小编Pow*_*ege的帖子

如何有效地排序R中字符串中的字符?

如何有效地对向量中每个字符串的字符进行排序?例如,给定一个字符串向量:

set.seed(1)
strings <- c(do.call(paste0, replicate(4, sample(LETTERS, 10000, TRUE), FALSE)),
do.call(paste0, replicate(3, sample(LETTERS, 10000, TRUE), FALSE)),
do.call(paste0, replicate(2, sample(LETTERS, 10000, TRUE), FALSE)))
Run Code Online (Sandbox Code Playgroud)

我编写了一个函数,该函数将每个字符串分成一个向量,对向量进行排序,然后折叠输出:

sort_cat <- function(strings){
  tmp <- strsplit(strings, split="")
  tmp <- lapply(tmp, sort)
  tmp <- lapply(tmp, paste0, collapse = "")
  tmp <- unlist(tmp)
  return(tmp)
}
sorted_strings <- sort_cat(strings)
Run Code Online (Sandbox Code Playgroud)

但是,我需要将其应用到的字符串向量很长,并且此功能太慢。有没有人对如何提高性能有任何建议?

sorting string performance r

9
推荐指数
1
解决办法
91
查看次数

在R中粘贴字符串的最有效方法是什么?

我有两个非常大的向量,需要将它们与定界符连接起来以形成唯一的ID。例如:

set.seed(1)

vec1 <- sample(1:10, 10000000, replace = T)
vec2 <- sample(1:1000000000, 10000000))
Run Code Online (Sandbox Code Playgroud)

我目前正在使用paste0():

system.time({    

uniq_id <- paste0(vec1, "_", vec2)

})
Run Code Online (Sandbox Code Playgroud)

但是,由于vec1和vec2的大小,这非常慢。是否有性能更高的替代方法?

performance r paste

7
推荐指数
1
解决办法
149
查看次数

如何识别所有未包含在“到”和“从”位置中的序号?

我有一个数据表,该数据表定义了一组序列的开始和结束坐标。例如:

df1 <- data.frame(from = c(7, 22, 35, 21, 50),
              to = c(13, 29, 43, 31, 60))
Run Code Online (Sandbox Code Playgroud)

给定开始和结束坐标(即1和100),我试图使用相同的输出格式来识别序列未涵盖的所有整数。例如:

df2 <- data.frame(from = c(1, 14, 32, 44, 61),
              to = c(6, 20, 34, 49, 100))
Run Code Online (Sandbox Code Playgroud)

这是我目前的尝试,其中我对df1中的序列进行矢量化处理,然后识别出与序列1:100不匹配的所有整数。

seq2 <- Vectorize(seq.default, vectorize.args = c("from", "to"))
seq <- c(1:100)
df1_int <- unlist(seq2(from = df1$from, to = df1$to))
df1_int <- unique(df1_int)
df2_int <- seq[!seq %in% df1_int]
all(diff(df2_int) == 1)
Run Code Online (Sandbox Code Playgroud)

但是,这种方法对于我想将其应用于(〜100,000,000个整数)的数据集来说太慢了,而且我不知道如何将向量df2_int重新格式化为df2格式的数据帧。

任何帮助将不胜感激!

注意:df1中的序列并不总是以最低整数开头(例如,序列可以从13到7,而不是从7到13)。也可能只有一个整数(例如7到7)的序列。

r sequence large-data

6
推荐指数
1
解决办法
84
查看次数

如何根据给定字符的一次或多次出现拆分字符串?

鉴于字符串:

string <- "AATTGGCGCTAG---AT-TTACG----"
Run Code Online (Sandbox Code Playgroud)

如何根据一个或多个“-”的出现将其拆分为字符串。例如:

string1 <- "AATTGGCGCTAG"
string2 <- "---"
string3 <- "AT"
string4 <- "-"
string5 <- "TTACG"
string6 <- "----"
Run Code Online (Sandbox Code Playgroud)

我试过了:

strsplit(string, "[-]+")
Run Code Online (Sandbox Code Playgroud)

但是,这不会返回“-”的刺痛

regex string r

3
推荐指数
1
解决办法
99
查看次数

按顺序计算字符,忽略给定字符(R)

我有一个单字符串的向量:

seq <- c("c","t","c","t","c","c","t","a","t", "g", "g", "c", "g", "g", "g", "a", "a", "g", "c", "-", "-", "a", "a","-", "-", "-", "c", "t", "g")
Run Code Online (Sandbox Code Playgroud)

我想创建一个相等长度的向量,从起始整数计算字符串,但忽略" - ".

例如,如果起始整数是1000

输出字符串将是:

out <-c(1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, NA, NA, 1019, 1020, NA, NA, NA, 1021, 1022, 1023)
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感谢!

string r vector count

2
推荐指数
1
解决办法
35
查看次数

如何使用R中的正则表达式从字符串中提取文本?

我有一个向量字符串,例如:

x <- c("gene_biotype \"protein_coding\"; transcript_name \"IGHV3-66-201\"; 
transcript_source \"havana\"; transcript_biotype \"IG_V_gene\"; 
protein_id \"ENSP00000375041\"; protein_version \"2\"; tag 
\"cds_end_NF\"; tag \"mRNA_end_NF\"; tag \"basic\"; 
transcript_support_level \"NA\";",
"gene_id \"ENSG00000211973\"; gene_version \"2\"; transcript_id 
\"ENST00000390633\"; transcript_version \"2\"; exon_number \"1\"; 
gene_name \"IGHV1-69\"; gene_source \"ensembl_havana\"; gene_biotype 
\"IG_V_gene\"; transcript_name \"IGHV1-69-201\"; transcript_source 
\"ensembl_havana\"; transcript_biotype \"IG_V_gene\"; protein_id 
\"ENSP00000375042\"; protein_version \"2\"; tag \"cds_end_NF\"; tag 
\"mRNA_end_NF\"; tag \"basic\"; transcript_support_level \"NA\";",
"gene_id \"ENSG00000211973\"; gene_version \"2\"; transcript_id 
\"ENST00000390633\"; transcript_version \"2\"; exon_number \"2\"; 
gene_name \"IGHV1-69\"; gene_source \"ensembl_havana\"; gene_biotype 
\"protein_coding\";")
Run Code Online (Sandbox Code Playgroud)

我需要提取遵循gene_biotype的引用文本(任何字符)。例如:

[1] protein_coding\ 
[2] IG_V_gene\
[3] protein_coding\ …
Run Code Online (Sandbox Code Playgroud)

regex r

1
推荐指数
1
解决办法
47
查看次数

标签 统计

r ×6

string ×3

performance ×2

regex ×2

count ×1

large-data ×1

paste ×1

sequence ×1

sorting ×1

vector ×1