有条件的,如果按模式选择

时间:2013-10-29 16:54:54

标签: r

假设我有这样的数据:

data <- as.list(c("Cb-a.csv", "Cc-a.csv", "Cd-a.csv", "Ca-e.csv"))

其中C是常数部分,实际情况下的字母是字母和2个数字的模式。我想根据具体情况做不同的事情

喜欢:

for (n in 1:length(data)){
 if ( data[[n]] == <condition> ){
  cat("Do this with 'Cb-a.csv', 'Cc-a.csv', 'Cd-a.csv'\n")}
  else{
   cat("Do this with 'Ca-e.csv'\n")}
}

哪个应该是我<condition>? 它必须区分数据输入的顺序或模式。 (阅读'Ca-e.csv'和'Ce-a.csv'之间的差异。)

在某种程度上,它必须重新创建数据,但使用“正确的模式”来查看它是否合适。 (但不是手动)

起初我考虑过grep条件,但在这种情况下,我只会得到数据中的哪种模式。

1 个答案:

答案 0 :(得分:0)

grepl返回一个布尔向量。

if ( grepl("^C.-a.csv$", data[[n]]) ) {
  cat("Do this\n")
} else {
  cat("Do that\n")
}

确切的正则表达式取决于您想要匹配的实际模式。