如果条件错误在r

时间:2016-05-10 04:36:38

标签: r

我有两个变量a和b

 A      B
 1      id
-1      asddnewid
13      asddsatransID 
-1      sadsddsdasd
-1      asdsadasdd

我想找到a是> 0然后我想在变量B中搜索字符" transid"并获得它的索引。

我尝试了以下代码

if (a > 0) {
c = regexpr("transid=",B)
}

但它显示错误。我不确定我是否正确地写了if条件

1 个答案:

答案 0 :(得分:1)

我们可以使用grep。如果我们只需要来自“A”

中的正值的索引
 grep("transID", df1$B[df1$A>0])
 #[1] 2

如果索引基于所有行

i1 <- which(df1$A >0 & grepl("transID", df1$B))
i1
#[1] 3
sapply(gregexpr("transID", df1$B[i1]), c)
#[1] 7

或者只是

r1 <- sapply(gregexpr("transID", df1$B[df1$A > 0]), c)
r1[r1 >0]
#[1] 7

关于使用if条件,if未进行矢量化,因此使用ifelse可能会更好。但是,从OP的帖子中,a未定义。我假设OP意味着A

数据

df1 <- structure(list(A = c(1L, -1L, 13L, -1L, -1L), B = 
c("id", "asddnewid", 
"asddsatransID", "sadsddsdasd", "asdsadasdd")), .Names = c("A", 
"B"), class = "data.frame", row.names = c(NA, -5L))