【发布时间】:2019-12-17 09:56:03
【问题描述】:
我有一个非常混乱的数据结构,我正在尝试将列子集中的任何观察的名称重新分配为该列名。我想编写一个 for 循环,说明第 28:141 列中的所有 non.na 观察结果(必须用它们的编号而不是它们的标题来调用这些列),将观察名称重命名为该列名称。
示例数据结构
df <- data.frame(Id = c('x111', 'x222', 'x333', 'x444'),
Ext =c("M", "L", "S","S"),
Ind1 = c('clean', NA, NA, 'clean'),
Ind2 = c(NA, 'medium', 'medium', NA),
Ind3 = c(NA, NA, 'tall', NA),
Ext2 = c(12, 15, 11, 9))
例如,如何将列 2:4 中的所有 non.na 观测值重命名为该特定列名称
【问题讨论】:
-
试试
df[2:4] <- Map(function(x, y) replace(as.character(x), !is.na(x), y), df[2:4], names(df)[2:4]) -
是的!这工作,非常感谢你!你能解释一下这里的逻辑吗?