从列名到 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 除了第二个 col2
和 col1
之外的每一列。
谢谢!
这样您将自动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))]
我的问题是我有一个包含 283 列的大型数据库,其中一些列具有相同的名称(例如,“uncultured”)。
有没有办法让 select 列避免重复名称的列?那些(细菌)通常丰度很小,所以我不太在意它们的贡献,我只想使用具有唯一名称的列。
我的数据库是这样的
Samples col1 col2 col3 col4 col2 col1....
S1
S2
S3
...
我想 select 除了第二个 col2
和 col1
之外的每一列。
谢谢!
这样您将自动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))]