r使用字段名提取数据集的子集

r使用字段名提取数据集的子集,r,function,tidyverse,R,Function,Tidyverse,我正在使用R tidyverse包提取一个大型数据集的几个子集,每个子集都匹配一个特定的字段名。然而,由于要提取的子集的数量很大,并且使用特定表达式逐个提取是非常耗时的,因此想知道是否有更快的方法来实现这一点 下面是一个简单的例子: 数据帧如下所示,称为“虚拟”: A我们可以将拆分成数据帧的列表 lst1 <- split(dummy, dummy$A) 注意:如果它是按操作分组的,我们不需要拆分它 aggregate(.~ A, dummy, FUN = mean) 数据 dummy

我正在使用R tidyverse包提取一个大型数据集的几个子集,每个子集都匹配一个特定的字段名。然而,由于要提取的子集的数量很大,并且使用特定表达式逐个提取是非常耗时的,因此想知道是否有更快的方法来实现这一点

下面是一个简单的例子: 数据帧如下所示,称为“虚拟”:


A我们可以将
拆分成
数据帧的
列表

lst1 <- split(dummy, dummy$A)
注意:如果它是按操作分组的,我们不需要
拆分它

aggregate(.~ A, dummy, FUN = mean)
数据
dummy您可以使用循环执行此操作。然而,正如@akrun所提到的,您最终可能会在全局环境中拥有很多对象。例如,如果你有200个主题,那么你将有200个对象(非常凌乱),也许你可以考虑下一步会是什么,看看你是否能在不创建很多对象

的情况下实现你想要做的事情。
subjects <- c(605, 608) 

for (i in 1:length(subjects)) {

  object_name <- paste0("subject", i)
  assign(object_name, filter(dummy, A == subjects[i]))

}

主题即使是伟大的@akrun也会通过
忘记
(它可以取代
拆分
+
拉普拉
)@冻糕我知道你非常喜欢。对于我(我不认为自己是伟大的或任何东西),<<代码> 返回一些新的格式输出(虽然可以改变)。另外,由于一些奇怪的原因,我不记得当我试图解决一个问题的时候,有什么好的提示。的确,许多对象是在全局环境中创建的。这是清理数据的过程。我打算使用临时环境在另一个R文件中使用每个主题数据。
lapply(lst1, function(x) colMeans(x[-1]))
aggregate(.~ A, dummy, FUN = mean)
dummy <- data.frame(A, B, C)
subjects <- c(605, 608) 

for (i in 1:length(subjects)) {

  object_name <- paste0("subject", i)
  assign(object_name, filter(dummy, A == subjects[i]))

}