【发布时间】:2016-06-19 02:37:18
【问题描述】:
假设我想在数据框中记录转换列,例如 iris 数据并为每个所需列动态创建后缀为 _log 的新列。
我想要实现的是:
df$Sepal.Length_log <- log (df$Sepal.Length)
df$Sepal.Width_log <- log (df$Sepal.Width)
df$Petal.Length_log <- log (df$Petal.Length)
df$Sepal.Width_log <- log (df$Sepal.Width)
但是当您的数据有许多列要转换时,这将是一项繁琐的任务,所以我想使用循环和 dplyr 包的 mutate 函数动态实现这一点,我不成功 天真 试验是:
library (dplyr)
data(iris)
varLabel <- c('Sepal.Length','Sepal.Width','Petal.Length','Petal.Width')
for (i in 1:length (varLabel)) {
varNew <- paste (varLabel[i],'log',sep='_')
iris <- dplyr::mutate (iris,varNew=log (varLabel[i])) # problem arises here
}
我收到此错误:Error: non-numeric argument to mathematical function
我搜索了一个解决方案,最相关的似乎是这个tutorial 标准和非标准评估,这个post 和that 也是一个,但我不知道如何借用从那里解决。任何帮助将不胜感激。
注意:
我想在数据集中同时拥有新旧列。
【问题讨论】: