假设我们有一个表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中的第4行。
我怎样才能做到这一点?我试过这个:
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 "}"
我能做什么?
我们可以使用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)
使用更改循环
for (i in 1:length(df[,1])){
if(df[i,1]>=100){
print(i)
break}
}