r - 对于每一行,如果/当首先满足条件时获取列号

标签 r

我有一个如下所示的数据框:

df <- data.frame(H0=c(35.4, NA, 36.0, 36.4), H1=c(32.3, 32.0, 34.3, 33.5), 
                 H2=c(33.4, 31.5, 33, 34.2), H3=c(32.9, 33.0, 34.0, 33.0),
                 H4=c(32.8, NA, 34.5, 33.2))

我需要一个函数来搜索每一行并返回首先满足条件的列的列索引(而不是名称),此处的值 <= 33.0。

NA 被忽略,所以我期望:

[1] 2 2 3 4

最佳答案

您的问题没有说明您希望如何处理 NA 或没有 < 33 的行。max.col 可能足以满足你的任务:

R>df
    H0   H1   H2   H3   H4
1 35.4 32.3 33.4 32.9 32.8
2   NA 32.0 31.5 33.0   NA
3 36.0 34.3 33.0 34.0 34.5
4 36.4 33.5 34.2 33.0 33.2
R>max.col(df <= 33, ties.method="first")
[1]  2 NA  3 4

编辑:要处理 NA,将它们替换为 Inf 应该可以解决问题:

R>max.col( `[<-`(df, is.na(df), value=Inf) <= 33, ties.method="first")
[1] 2 2 3 4

关于r - 对于每一行,如果/当首先满足条件时获取列号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24961301/

相关文章:

r - shinydashboard 中的仪表板

R:如何将字符串参数转换为变量?

r - 在线性模型中结合 cbind 和 paste

ddply 内的 R ttest 给出错误 "grouping factor must have exactly 2 levels"

r - 替换元素时避免复制整个向量 (a[1] <- 2)

r - LDA 贡献双标图

r - 更改ggplot中的线宽,而不是大小

r - R 中的高级运行时间计算

R shiny 下载不同的图像格式

r - 使用ggplot时无法在R中标记多面板图形