【发布时间】:2021-09-06 11:33:33
【问题描述】:
假设我有这些数据:
a <- data.frame(group=c("one", "two", "three"), a = c(1,2,3), b=c(4,3,5), c=c(8,2,1))
group a b c
1 one 1 4 8
2 two 2 3 2
3 three 3 5 1
我想对第 2-4 列执行一个函数,然后对这些结果执行另一个函数。特别是,我想对这些列中的每一列进行平方,然后将结果相加。
这是我想要得到的:
group a b c want
1 one 1 4 8 81
2 two 2 3 2 17
3 three 3 5 1 35
(对于第一行,81由1^2 + 4^2 + 8^2获取。
我感觉这可能涉及lapply 之类的东西,但我不确定。
请注意,我想使用其他东西而不是类似的东西来做到这一点
a %>% mutate(want = a^2 + b^2 + c^2)
(原则上可能需要考虑数千列)。
base R 和 tidyverse 中的解决方案值得赞赏。
【问题讨论】: