【问题标题】:How select columns, where the first row equals TRUE in R?如何选择列,其中第一行等于 R 中的 TRUE?
【发布时间】:2021-03-16 10:02:30
【问题描述】:

我正在使用以下代码

summary.out$which[which.max(summary.out$adjr2),]

这给了我一行一行的列名,等于 TRUE 或 FALSE。 我应该在此代码中添加什么以获得列名,其中第一行显示为 TRUE? 此外,如何创建此输出的所有列名都在一个用“+”号分隔的字符串中? (一个字符串显示“Column1”+“Column2”+“Column3”

【问题讨论】:

标签: r


【解决方案1】:

由于 OP 没有提供最小的可重现示例,我们假设 summary.out 是一个数据框,因此我们可以使用 colnames() 函数来提取列名,一旦我们知道第一个的哪些元素行的值为TRUE

这是一个可重现的示例,说明如何使用数据框第一行中的 TRUE / FALSE 值来提取其列名。

textData <- "v1,v2,v3,v4
TRUE,FALSE,TRUE,TRUE
FALSE,TRUE,FALSE,TRUE
TRUE,TRUE,TRUE,TRUE"

data <- read.csv(text=textData)

# select column names where first row = TRUE
colnames(data)[data[1,]==TRUE]

前面的代码行使用提取运算符的[ 形式从colnames() 函数的结果中提取所需的元素。

...和输出:

> colnames(data)[data[1,]==TRUE]
[1] "v1" "v3" "v4"

我们可以使用paste() 函数及其collapse = 参数将名称打印为由+ 符号分隔的单个对象。

# separated by + sign
paste(colnames(data)[data[1,]==TRUE],collapse = " + ")

...和输出:

> # separated by + sign
> paste(colnames(data)[data[1,]==TRUE],collapse = " + ")
[1] "v1 + v3 + v4"

【讨论】:

    猜你喜欢
    • 2016-05-29
    • 2016-07-12
    • 2013-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多