我使用的数据帧具有任意数量的变量,并且具有任意长度。我想创建一个函数,以按其最早的值对每一列进行规范化。我是R / tidyverse的新手,并且认为for循环会起作用:
Col.norm <- function(df){
for (i in c(2:ncol(df))) {
select(df,i) %>%
mutate(df[]/df[[1]])
}}
具有日期列和3个变量的代表性df如下所示:
Z <- data.frame(date = seq(as.Date("2018-06-01"), as.Date("2018-06-11"), "days"), A = c(5:15), B = c(6:16), C= c(7:17))
在该df上运行上述功能会产生以下错误:
“ mutate_impl(.data,点)中的错误: 评估错误:二进制运算符的非数字参数”
任何帮助将不胜感激-不确定在执行选择步骤后如何循环...我在此上花了很多时间...
答案 0 :(得分:0)
Col.norm <- function(df) {
mutate_at(df, -1, funs(. / head(., 1)))
}