我有一个具有受试者特征的df(foo),然后是一些基因组数据(如果重要的话,以酶促委员会编号或EC的形式)。
sample ca_avg id age 1.1.1.1 1.1.1.100 1.1.1.12
124-5 1003 124 80 0 0.0001 0.654
我想将酶的佣金编号更改为实际名称。我将.txt导入到df(enames)中,该df拥有转换ECs->名称的文件,而ECs比foo中的文件多。
ec_num 1.1.1.1 1.1.1.100 1.1.1.102 1.1.1.103 1.1.1.108
ec_name adh oacp 3dr lt3h c3d
我想用ec_name(如果可用)替换foo的列名,否则,像这样单独留下名称:
sample ca_avg id age adh oacp 1.1.1.12
124-5 1003 124 80 0 0.0001 0.654
我尝试做的第一件事是找到数据框之间的交集:
common_col <- intersect(colnames(foo), colnames(enames))
然后我尝试进行
的许多迭代 if (colnames(foo) %in% common_col){ colnames(foo) <- colnames(enames)}
但是它不起作用。
此后我为条件重命名所做的任何尝试都失败了。任何帮助将不胜感激。
答案 0 :(得分:0)
这应该有帮助:
# example datasets
foo = data.frame(x=1,
y=2,
z=3)
enames = data.frame(y = "YY",
z = "ZZ", stringsAsFactors = F)
# see foo
foo
# x y z
# 1 1 2 3
# keep common column names
common_col = intersect(names(foo), names(enames))
# replace common column names in foo with corresponding values from enames
names(foo)[names(foo) %in% common_col] = enames[common_col]
# check foo again
foo
# x YY ZZ
# 1 1 2 3
如果您愿意,也可以使用colnames
代替names
。