R - 是否有有效的方法来执行此重复性任务?

R - are there efficient ways to perform this repetitive task?

使用 R,我正在尝试创建一个包含多个列的均值列,如下所示。有什么有效的方法来执行这种重复性任务吗?

df$c1mean = rowMeans(subset(df, select = c1_1:c1_5), na.rm = TRUE)
df$c2mean = rowMeans(subset(df, select = c2_1:c2_5), na.rm = TRUE)
df$c3mean = rowMeans(subset(df, select = c3_1:c3_5), na.rm = TRUE)
df$c4mean = rowMeans(subset(df, select = c4_1:c4_5), na.rm = TRUE)
df$c5mean = rowMeans(subset(df, select = c5_1:c5_5), na.rm = TRUE)

我们可以使用 lapply 遍历从 1 到 5 的序列,使用 seq 创建从该值到 5 的序列,paste 'c', select 'df' 的列,应用 rowMeans,并将输出分配 (<-) 回新列

df[paste0("c", 1:5, "mean")] <- lapply(1:5, function(i)  
            rowMeans(df[paste0("c", i, "_", i:5)], na.rm = TRUE))

这可以通过 grep

来完成
nm1 <- paste0("c", 1:5)
df[paste0(nm1, "mean")] <- lapply(nm1, function(nm)
           rowMeans(df[grep(nm, names(df))], na.rm = TRUE)))