マイデータを変異させ、次のようになります予期しない値dplyrにカスタム関数を適用しながらは::
library(tidyverse)
df <- tribble(
~y_val, ~z_val,
2, 4,
5, 3,
8, 2,
1, 1,
9, 3)
私はdplyrとデータフレームに適用する::コールを変異させたいカスタム関数fun_b()
を持っています。しかし、fun_b()
は、その中のループを持っている機能fun_a()
を使用しています。私は、カスタム関数を実行すると
fun_a <- function(x, y, z, times = 1) {
df <- data.frame()
for (i in 1:times) {
x <- x * 2 + i * x
y <- y/3 + i * y
z <- z + 1 + z * i
d <- data.frame(x, y, z)
df <- rbind(df, d)
}
return(df)
}
fun_b <- function(x, y, z, times = 1) {
df <- fun_a(x, y, z, times)
x_r <- sum(df$x)
y_r <- sum(df$y)
z_r <- sum(df$z)
val <- x_r/y_r * z_r
return(val)
}
:
df %>%
mutate(test = fun_b(x = 1, y = y_val, z = z_val, times = 1))
をtest
のすべての変異した値が同じ値(13.95)を示しています。それは意味をなさない!たとえば、チーフ(y_val = 2, z_val = 4)
の最初の行は10.125です。
fun_b(x = 1, y = 2, z = 4, times = 1)
ここでは何が起こっていますか?
'sum'呼び出しを取り出して、あなたのために' 'd''%' '%rowwise()%>% mutate(test = fun_b(x = 1、y = y_val、z = z_val、times = 1)関数はベクトル化可能です – alistaire