tidyverse中使用整个数据的按行操作

时间:2018-12-06 16:26:56

标签: r apply

说我们有一些数据

w <- 1:3
x <- 5:7
y <- c(3, 2, 3)
z <- c(3, 2, 5)
df <- data.frame(w,x,y,z)

然后我想创建一个新的向量,该向量可以运行以下内容

apply(df, 1, function(data) sum(2^(seq_along(data)) * data))

如何在Tidyverse中运行此apply函数?

我发现与数据是输入而不是特定列有关的问题。

1 个答案:

答案 0 :(得分:3)

您可以放弃循环和程序包,而只需

rowSums(2^col(df) * df)
# [1]  94  76 138

col(df)为您提供一个矩阵,其中列值为列号。因此,您可以将其用作指数,乘以原始数据,取行总和,并避免所有循环或打包在一起。