r中的整数strsplit

时间:2015-07-16 21:05:42

标签: r string

假设我有类似的字符串:

   "0cGy-GCSF6hr-f-m5"
   "100cGy-LPS12hr-m-m2"
   "300cGy-NOTRT24hr-f-m2"
   "0cGy-6h-m1"

它有点复杂,但我想要的是从它们中检索到:

"GCSF", "LSP", "NOTRT", "NOTRT"

表示如果没有" GCSF"," LSP"," NOTRT",则返回" NOTRT"。 和h / hr之前的整数

6, 12, 24, 6

我已经尝试了一段时间,但非常沮丧。有人有好主意吗?

2 个答案:

答案 0 :(得分:4)

你的意思是这样吗?

string currentDir=Directory.GetCurrentDirectory();

if (defaultButtonClicked)
{

_csvFilePath = Path.Combine(currentDir, "File Name_" + DateTime.Now.AddDays(-1).ToString("MM-dd-yyyy") + ".xls");
                    defaultButtonClicked = false;

}

else if (dateSpecificSearchButtonClicked)

               {
                    var dateTemp = calChoosedate.Value.ToString("MM-dd-yyyy");
                    _csvFilePath = Path.Combine(currentDir, "File Name_" + dateTemp + ".xls");
                    dateSpecificSearchButtonClicked = false;
                }


workBook.SaveAs(_csvFilePath, Excel.XlFileFormat.xlOpenXMLWorkbook, Type.Missing, Type.Missing, true, false, Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

                workBook.Close(true, misValue, misValue);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(application)

答案 1 :(得分:2)

这是一个使用' dplyr'的版本和' stringr'返回向量而不是列表并放置" NOTRT"在空插槽中为字符簇,6在空插槽中为数字:

library(dplyr)
library(stringr)

letters <- s %>%
  str_extract_all("[A-Z]+(?=[0-9]+hr?)")  %>%
  lapply(., function(x) {if (length(x)==0) {"NOTRT"} else {x} })  %>%
  unlist(.)

numbers <- s %>%
  str_extract_all("[0-9]+(?=hr?)") %>%
  lapply(., function(x) {if (length(x)==0) {"6"} else {x} })  %>%
  as.numeric(unlist(.))

将您的数据与附加上一个答案的评论中的示例一起使用......

    s <- c("0cGy-GCSF6hr-f-m5", "100cGy-LPS12hr-m-m2", "300cGy-NOTRT24hr-f-m2", "0cGy-6h-m1", "0cGy-LPS6-m1")

...这是产生的输出:

> letters
[1] "GCSF"  "LPS"   "NOTRT" "NOTRT" "NOTRT"

> numbers
[1]  6 12 24  6  6