【发布时间】:2021-05-18 15:03:28
【问题描述】:
为什么这段代码更改实际上并没有改变 TEST 的列名?
TEST = data.frame(col1 = LETTERS, col2 = letters)
"TEST" %>% paste0(" %<>% dplyr::rename(capitalLetters = 'col1') ") %>% parse(text = .) %>% eval()
我想对大量数据帧进行一系列转换,其中我有一个数据帧环境变量名称的列表。但我不想手动输入每个数据帧的转换,所以我想使用解析文本-> eval。
编辑:摆脱分配管道
"TEST" %>%
paste0(
., " <- ", .,
" %>% dplyr::rename(capitalLetters = col1) "
) %>% parse(text = .) %>% eval()
编辑:刚刚注意到这也不起作用
"A <- 3" %>% parse(text = .) %>% eval()
A
Error: object 'A' not found
我猜无法通过 parse->eval 分配/更新环境变量?
【问题讨论】:
-
万一你打错了:
%<>%而不是%>%? -
不是错字,
library(magrittr),这是一个管道,它将输入传递给右侧的函数,并将输入设置为右侧函数的值 -
更新以消除分配管道
-
"TEST" %>% paste0(" %>% dplyr::rename(capitalLetters = 'col1') ") %>% parse(text = .) %>% eval()不适合你? -
它工作,但它没有分配。重点是我不想输入数据框名称 TEST,我有一个大的数据框名称列表(数据框的环境变量名称列表),所有这些都需要一系列转换。所以我希望分配成为评估字符串的一部分。
标签: r