如何遍历由data.table中的数字索引的变量?

Yas*_*ser 3 r data.table

我是R的新手,可以针对以下问题使用一些帮助:

我有一个data.table格式的相当大的数据集,我想遍历一组由数字索引的变量(例如x_1,x_2,...,x_n)。为了简单起见,假设我要对变量y的不同值取每个变量的平均值,然后在my中将其命名为(m_1,m_2,...,m_n)data.table

有人可以建议这样做的有效代码吗?n而且像这样的变量数量x_*太多,我无法一一完成。

谢谢

Gre*_*gor 5

非常简单有效:

ind = 1:5 # replace 5 with your n
for (i in ind) {
  set(df, j = paste("m", i, sep = "_"), value = mean(df[[paste("x", i, sep = "_")]]))
}
Run Code Online (Sandbox Code Playgroud)

set通常非常快。它不允许分组操作,因此,如果需要按另一列分组,则需要使用其他方法,例如:

ind = 1:5
df[, paste("m", ind, sep = "_") := lapply(.SD, mean), .SDcols = paste("x", ind, sep = "_")]
Run Code Online (Sandbox Code Playgroud)

在上面,您可以by正常使用参数。