我有两个变量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条件
答案 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))