r语言 - if/then在列内循环



我希望在r中运行if else序列,但在整个数据框架的每个列内。例如,

如果是rmet_1 = 1,我需要用-2.68347代替。

如果是rmet_1 = 2,则用-2.503847代替。

每个问题/栏有四个可能的选项,共36列。我想象它会作为一个循环运行,但它是在列vs整个数据框架,这使得它更难以为我弄清楚如何编码。提前感谢您的帮助!

我们不需要if/else条件。可以使用命名向量来匹配和替换每个列中的值。下面的代码循环遍历列(lapply),并将键/值向量与列的值进行匹配。

nm1 <- setNames(c(-2.68347, -2.503847, -2.35, -2.65), 1:4)
df1[] <- lapply(df1, function(x) nm1[as.character(x)])

如果元素是1到4,那么我们甚至不需要一个命名向量,也就是说,只需按顺序传递一个向量,并利用位置索引

df1[] <- c(-2.68347, -2.503847, -2.35, -2.65)[as.matrix(df1)]

数据
set.seed(24)
df1 <- as.data.frame(matrix(sample(1:4, 10 * 4, replace = TRUE), ncol = 4))

最新更新