假设我有以下字符串:
pos/S881.LMG1810.QE009562.mzML
Run Code Online (Sandbox Code Playgroud)
并希望选择该字符串的开头:
pos/S881.
Run Code Online (Sandbox Code Playgroud)
我可以使用以下正则表达式来获取字符串的开头 (^),然后是任何字符 (.)、任意次数 (*),以小数点 (\.) 结尾
^.*\.
Run Code Online (Sandbox Code Playgroud)
然而,这在字符串中的最后一个小数处终止,因此给了我:
pos/S881.LMG1810.QE009562.
Run Code Online (Sandbox Code Playgroud)
如何在第一个小数点处终止选择?
我希望对向量中出现的值的每个实例进行编号。例如,某个值的第一个实例将获取“1”,第二个实例将获取“2”,依此类推 - 计算该值在向量中之前出现的次数。EuStockMarkets我可以使用 R中的 for 循环使用datasets.
#load data
data <- as.data.frame(datasets::EuStockMarkets)
df <- data.frame(order = 1:nrow(data),value = data$DAX)
head(df)
#calculate number of instances
start_time <- Sys.time()
for (i in 1:nrow(df)) {
df[i,"instance"]<- sum(df[1:i,"value"] == df[i,"value"])
}
end_time <- Sys.time()
end_time - start_time
#Time difference of 0.1126978 secs
Run Code Online (Sandbox Code Playgroud)
这很好,但如果对于更大的数据集有更快的选项,并且想知道它们是否是一个预先存在的函数(也许带有 tidyverse 包),我宁愿不使用 for 循环。