从列名到 select 唯一列的 R 方法?

R way to select unique columns from column name?

我的问题是我有一个包含 283 列的大型数据库,其中一些列具有相同的名称(例如,“uncultured”)。
有没有办法让 select 列避免重复名称的列?那些(细菌)通常丰度很小,所以我不太在意它们的贡献,我只想使用具有唯一名称的列。

我的数据库是这样的

    Samples  col1  col2  col3  col4 col2 col1.... 
S1
S2
S3
...

我想 select 除了第二个 col2col1 之外的每一列。

谢谢!

这样您将自动select第一列具有唯一名称:

df[unique(colnames(df))]
#>   col1 col2 col3 col4 S1 S2 S3
#> 1    1    2    3    4  7  8  9
#> 2    1    2    3    4  7  8  9
#> 3    1    2    3    4  7  8  9
#> 4    1    2    3    4  7  8  9
#> 5    1    2    3    4  7  8  9

可重现的例子

df 定义为:

df <- as.data.frame(matrix(rep(1:9, 5), ncol = 9, byrow = TRUE))
colnames(df) <- c("col1", "col2", "col3", "col4", "col2", "col1", "S1", "S2", "S3")
df
#>   col1 col2 col3 col4 col2 col1 S1 S2 S3
#> 1    1    2    3    4    5    6  7  8  9
#> 2    1    2    3    4    5    6  7  8  9
#> 3    1    2    3    4    5    6  7  8  9
#> 4    1    2    3    4    5    6  7  8  9
#> 5    1    2    3    4    5    6  7  8  9

像这样的东西应该可以工作:

df[, !duplicated(colnames(df))]