如何创建一系列列(让我们说X1,X2,...,X100),其值取决于列索引(1-100),或者(理想情况下)不使用for循环?
以下是我对for循环的尝试(它不起作用 - 我认为它与使用粘贴创建列的名称有关。但我相信它描述得很好我想实现。
data <- runif(10)
data <- as_tibble(data)
for (i in 1:100){
data <- data %>% mutate(paste('X', i, sep = '') = (value > 0.01 * i))
}
答案 0 :(得分:3)
我们可以将map
与!!
library(tidyverse)
map(1:100, ~ data %>%
transmute(!! paste0("X", .x) := value > 0.01 * .x)) %>%
bind_cols(data, .)
或使用for
循环
for (i in 1:100){
data <- data %>%
mutate(!! paste('X', i, sep = '') := (value > 0.01 * i))
}