【发布时间】:2019-04-19 23:54:44
【问题描述】:
我需要调用循环中的变量并将其用作我的列名:
这是一个示例数据集:
mtcars.df <- mtcars
预期输出:
mtcars.df <- mtcars.df %>% add_column(a1 = sample (1:4, 32, replace = TRUE), b1 = sample (1:4, 32, replace = TRUE), c1 = sample (1:4, 32, replace = TRUE))
所以需要在循环中创建 a1、b1 和 c1 并重命名为 a1、b1 和 c1。原始数据集中的名称更长(并且组合不同),但这是在变量 mpg.filename 中定义的。
这是我到目前为止所尝试的:第一个显然没有给出想要的结果,但它只是为了展示我想要实现的目标。
mpg.filename <- c("a1.file", "b1.file", "c1.file")
for (i in mpg.filename) {
sample.name <- unlist(strsplit(as.character(i), '.', fixed = TRUE))[1]
mtcars.df$i <- sample (1:4, 32, replace = TRUE)
}
for (i in mpg.filename) {
sample.name <- unlist(strsplit(as.character(i), '.', fixed = TRUE))[1]
mtcars.df$temp.var <- sample (1:4, 32, replace = TRUE)
temp.name <- paste0 (sample.name) %>% rlang::parse_expr()
mtcars.df <- mtcars.df %>% rename (eval (sample.name) = temp.var)
}
for (i in mpg.filename) {
sample.name <- unlist(strsplit(as.character(i), '.', fixed = TRUE))[1]
mtcars.df$temp.var <- sample (1:4, 32, replace = TRUE)
temp.name <- paste0 (sample.name) %>% rlang::parse_expr()
mtcars.df <- mtcars.df %>% rename (syms(sample.name) = temp.var)
}
我也试过get、as.symbol、parse (text = "sample.name"),但也没有用。
感谢您的帮助。我曾尝试在论坛上查看其他答案,但它们似乎不适用或不起作用。
using eval() on string to access object attributes in R
call columns from inside a for loop in R
【问题讨论】:
标签: r loops environment-variables