如何访问dplyr :: funs中的管道data.frame?

时间:2016-07-31 01:13:49

标签: r dplyr

例如,如果访问者是..,则可以使用:

iris %>% 
  select_if(is.numeric) %>% 
  # `..` here refers to the object generated thus far. 
  # `.` refers to the column being acted on.
  mutate_all(funs(./sum(..)))

2 个答案:

答案 0 :(得分:0)

如果您想获取列数,可以

iris %>% 
  select_if(is.numeric) %>% 
  mutate_all(funs(./sum(.)))

如果您想要总金额,可以将其存储为另一列

iris %>% select_if(is.numeric) %>% 
  mutate(totsum = sum(.)) %>%
  mutate_at(vars(-totsum), funs(./totsum))

我不认为将dplyr用于此类非列或行分组操作有很多优点。

答案 1 :(得分:0)

我们可以使用data.table

 library(data.table)
 as.data.table(iris)[, lapply(.SD, function(x) if(is.numeric(x)) x/sum(x)) else NULL)]