假设我们有表x:
V1 V2 V3
1 8 18
95 36 -40
-67 -68 -27
192 2 9
160 105 36
我想从V1中找到第一行,该行大于100。在我们的例子中,192是大于100的第一行。所以我想获得4作为输出,因为192是V1中的第四行V1。
我该如何实现?我尝试过:
for (i in 1:length(x$v1){
if(x[1,i]>=100){
print(i)
break}
}
但是没有用。 R 编译器说:
Error in if (x[1, i] >= 100) print(i) : argument is of length zero
> break
Error: no loop for break/next, jumping to top level
> }
Error: unexpected '}' in "}"
我该怎么办?
答案 0 :(得分:1)
我们可以使用max.col
j1 = max.col(df1 > 100, 'first')
j2 = j1 * NA^!rowSums(df1 > 100)
然后使用行/列索引提取值
na.omit(df1[cbind(seq_len(nrow(df1)), j2)])[1]
#[1] 192
如果我们仅检查第一列,则可以使用which.max
which.max(df1$V1 > 100)
答案 1 :(得分:0)
使用以下方法更改循环
for (i in 1:length(df[,1])){
if(df[i,1]>=100){
print(i)
break}
}