R:我正在尝试将 rollmean(zoo) 应用于列表中多个数据框中的特定列
R: I'm trying to apply rollmean(zoo) to a particular column in several dataframes which are in a list
重现:
df1 <- data.frame(X = c(0:9), Y = c(10:19))
df2 <- data.frame(X = c(0:9), Y = c(10:19))
df3 <- data.frame(X = c(0:9), Y = c(10:19))
list_of_df <- list(A = df1, B = df2, C = df3)
list_of_df
我正在尝试将 zoo 中的 rollmean 函数应用于此数据帧列表中的每个 'Y' 列。
我已经尝试 lapply 但没有成功,似乎无论我以哪种方式旋转它,都无法绕过指定你想在某个时候应用的数据框。
这是数据帧之一
roll_mean <- rollmean(list_of_df$A, 2)
roll_mean
显然这行不通:
roll_mean1 <- rollmean(list_of_df, 2)
roll_mean1
我也试过这个:
子集(可能不是必需的)
Sub1 <- lapply(list_of_df, "[", 2)
roll_mean1 <- rollmean(Sub1, 2)
roll_mean1
似乎没有办法不用
在 rollmean 函数中指定特定的数据帧
lapply(list_of_df), function(x) rollmean(list_of_df, 2))
for 循环?也没有成功
For (i in list_of_df) {roll_mean1 <- rollmean(Sub1, 2)
Exp
}
说的很明显,但我对一般的编码还很陌生,希望得到一些指导。
我突然想到,即使它确实有效,被平均的列也会比数据帧的其余部分长一个值;我该如何解决这个问题?
这个问题一方面说它只想对 Y 执行 rollmean,另一方面说这有效 roll_mean <- rollmean(list_of_df$A, 2)
但 所有 列都有效。
1) 假设您要将 rollmean
应用于所有列:
像这样使用lapply
:
lapply(list_of_df, rollmean, 2)
这也有效:
for(i in seq_along(list_of_df)) list_of_df[[i]] <- rollmean(list_of_df[[i]], 2)
2)如果只想应用到Y列:
lapply(list_of_df, transform, Y = rollmean(Y, 2, fill = NA))
或
for(i in seq_along(list_of_df)) {
list_of_df[[i]]$Y <- rollmean(list_of_df[[i]]$Y, 2, fill = NA)
}
重现:
df1 <- data.frame(X = c(0:9), Y = c(10:19))
df2 <- data.frame(X = c(0:9), Y = c(10:19))
df3 <- data.frame(X = c(0:9), Y = c(10:19))
list_of_df <- list(A = df1, B = df2, C = df3)
list_of_df
我正在尝试将 zoo 中的 rollmean 函数应用于此数据帧列表中的每个 'Y' 列。 我已经尝试 lapply 但没有成功,似乎无论我以哪种方式旋转它,都无法绕过指定你想在某个时候应用的数据框。
这是数据帧之一
roll_mean <- rollmean(list_of_df$A, 2)
roll_mean
显然这行不通:
roll_mean1 <- rollmean(list_of_df, 2)
roll_mean1
我也试过这个: 子集(可能不是必需的)
Sub1 <- lapply(list_of_df, "[", 2)
roll_mean1 <- rollmean(Sub1, 2)
roll_mean1
似乎没有办法不用 在 rollmean 函数中指定特定的数据帧
lapply(list_of_df), function(x) rollmean(list_of_df, 2))
for 循环?也没有成功
For (i in list_of_df) {roll_mean1 <- rollmean(Sub1, 2)
Exp
}
说的很明显,但我对一般的编码还很陌生,希望得到一些指导。 我突然想到,即使它确实有效,被平均的列也会比数据帧的其余部分长一个值;我该如何解决这个问题?
这个问题一方面说它只想对 Y 执行 rollmean,另一方面说这有效 roll_mean <- rollmean(list_of_df$A, 2)
但 所有 列都有效。
1) 假设您要将 rollmean
应用于所有列:
像这样使用lapply
:
lapply(list_of_df, rollmean, 2)
这也有效:
for(i in seq_along(list_of_df)) list_of_df[[i]] <- rollmean(list_of_df[[i]], 2)
2)如果只想应用到Y列:
lapply(list_of_df, transform, Y = rollmean(Y, 2, fill = NA))
或
for(i in seq_along(list_of_df)) {
list_of_df[[i]]$Y <- rollmean(list_of_df[[i]]$Y, 2, fill = NA)
}