说我们有一些数据
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
函数?
我发现与数据是输入而不是特定列有关的问题。
答案 0 :(得分:3)
您可以放弃循环和程序包,而只需
rowSums(2^col(df) * df)
# [1] 94 76 138
col(df)
为您提供一个矩阵,其中列值为列号。因此,您可以将其用作指数,乘以原始数据,取行总和,并避免所有循环或打包在一起。