R:我正在尝试将rollmean(zoo)应用于列表中几个数据帧中的特定列

问题描述 投票:0回答:1

reprod:

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 
}

虽然很明显,但是我一般对编码还是很陌生的,不胜感激。在我看来,即使它确实起作用了,但被平均的列也将比其余数据帧长一个值;我将如何解决?

r for-loop lapply mean zoo
1个回答
0
投票

像这样使用lapply

lapply(list_of_df, rollmean, 2)
© www.soinside.com 2019 - 2024. All rights reserved.