如果您想要基本的 R 方法,您应该可以使用 lapply() - 因为我没有您的确切数据,所以我制作了一些示例数据,但不确定它是否与您所拥有的大致相同。
## Create sample data
sample_data <- data.frame(id = sample(LETTERS, 50, replace = TRUE),
c1 <- sample(1:10, 50, replace = TRUE),
c2 <- sample(1:10, 50, replace = TRUE),
c3 <- sample(1:10, 50, replace = TRUE),
c4 <- sample(1:10, 50, replace = TRUE),
c5 <- sample(1:10, 50, replace = TRUE),
c6 <- sample(1:10, 50, replace = TRUE),
c7 <- sample(1:10, 50, replace = TRUE),
c8 <- sample(1:10, 50, replace = TRUE),
c9 <- sample(1:10, 50, replace = TRUE),
c10 <- sample(1:10, 50, replace = TRUE),
c11 <- sample(1:10, 50, replace = TRUE),
c12 <- sample(1:10, 50, replace = TRUE),
c13 <- sample(1:10, 50, replace = TRUE),
c14 <- sample(1:10, 50, replace = TRUE),
c15 <- sample(1:10, 50, replace = TRUE),
c16 <- sample(1:10, 50, replace = TRUE),
c17 <- sample(1:10, 50, replace = TRUE),
c18 <- sample(1:10, 50, replace = TRUE),
c19 <- sample(1:10, 50, replace = TRUE))
cols <- sprintf("s40b.%s",seq(1:19))
names(sample_data)[2:20] <- cols
使用lapply() 将列 s40b.1 转换为 s40b.19:
cols <- sprintf("s40b.%s",seq(1:19))
sample_data[cols] <- lapply(sample_data[cols], function(x){ifelse(x != 1, 0, 1)})