如何在R中提取105个变量进行计算

如何在R中提取105个变量进行计算,r,dataframe,batch-processing,R,Dataframe,Batch Processing,我有7个实验数据帧,每个数据帧被细分为15个重复(或迭代)。我现在对所有105变量x感兴趣,以便稍后在分析中进行计算 假设您有以下带有随机数字的数据帧,为了简单起见,假设所有数据帧包含不同的数字: set.seed(2) a <- runif(100, -1.5, 1.5) b <- pnorm(rnorm(100)) c <- rnorm(100) d <- rnorm(100) e <- dnorm(rnorm(100)) iteration <- so

我有7个实验数据帧,每个数据帧被细分为15个重复(或迭代)。我现在对所有105变量
x
感兴趣,以便稍后在分析中进行计算

假设您有以下带有随机数字的数据帧,为了简单起见,假设所有数据帧包含不同的数字:

set.seed(2)

a <- runif(100, -1.5, 1.5)
b <- pnorm(rnorm(100))
c <- rnorm(100)
d <- rnorm(100)
e <- dnorm(rnorm(100))
iteration <- sort(sample(1:7, 100, replace=T), decreasing=F)
x <- f <- sample(1:1000, 100, replace=T)

df1 <- data.frame(a,b,c,d,e,iteration,x)
df2 <- data.frame(a,b,c,d,e,iteration,x)
df3 <- data.frame(a,b,c,d,e,iteration,x)
df4 <- data.frame(a,b,c,d,e,iteration,x)
df5 <- data.frame(a,b,c,d,e,iteration,x)
df6 <- data.frame(a,b,c,d,e,iteration,x)
df7 <- data.frame(a,b,c,d,e,iteration,x)
我使用以下命令来“提取”迭代1的变量
df1$x
,但这将需要为剩余的变量增加208行:

df_1 <- df1[which(df1$iteration=='1'),]
df_1_final <- df_1[grepl("1", df_1$iteration), c(6, 7)]

df_1使用
dplyr的可能性。可能更容易使用列表中的
数据。帧
(来自@akrun的注释)

或在
数据表中

rbindlist(mget(paste0('df', 1:7)))[,mean(x)-sd(x) ,.(gr=rep(1:7,each=100),iteration)]

可以使用
dplyr
。可能更容易使用列表中的
数据。帧
(来自@akrun的注释)

或在
数据表中

rbindlist(mget(paste0('df', 1:7)))[,mean(x)-sd(x) ,.(gr=rep(1:7,each=100),iteration)]

您可以创建一个无意义方程函数,然后在
tapply()
中使用它,并将,
iteration
作为每个df的索引参数。因此对于df1:
tapply(df1$x,INDEX=df1$iteration,nonsenseFunction)
,它将返回一个列表/数组,其中包含df1的每个组(迭代)的所有计算。

您可以创建一个无意义方程函数,然后在
tapply()
中使用它,对于每个df,
iteration
作为索引参数。对于df1:
taply(df1$x,INDEX=df1$iteration,nonsense函数)
,它将返回一个列表/数组,其中包含df1的每个组(迭代)的所有计算。

尝试
d1尝试
d1尝试
d1或使用
数据。表
这是您的想法,我刚刚删除了我的,因为它更详细,使用2 revs'和nongkrongs
bindrows
解决方案使用我的原始数据,我得到了
错误:错误的结果大小(1896),预期为28440或1。rbind_all(x):不相等因子级别:强制为字符
。我做错了什么?或者使用了
data.table
rbindlist(mget(paste0('df',1:7))[,mean(x)-sd(x),(gr=rep(1:7,each=100),迭代)]
这是你的主意,我刚刚删除了我的,因为它更为详细,使用了2个revs'和nongkrongs
bindrows
解决方案,在这里,我得到了
错误:结果大小错误(1896),预计为28440或1。rbind_all(x):不相等因子级别:强制为字符
。我做错了什么?非常感谢你,斯莫尔。此解决方案确实起作用,但必须应用7次,并且其输出的结构不如
bindrows
解决方案的输出清晰。@TilHund Right on,是的,
tapply
的输出结构可能会有点混乱。我只是想展示另一种方法,而不必安装和学习
dplyr
。通过
sort(result,discreating=F)
修复。很好!很高兴听到这个解决方案适合您。非常感谢您,small_data88。此解决方案确实起作用,但必须应用7次,并且其输出的结构不如
bindrows
解决方案的输出清晰。@TilHund Right on,是的,
tapply
的输出结构可能会有点混乱。我只是想展示另一种方法,而不必安装和学习
dplyr
。通过
sort(result,discreating=F)
修复。很好!很高兴听到这个解决方案适合您。
rbindlist(mget(paste0('df', 1:7)))[,mean(x)-sd(x) ,.(gr=rep(1:7,each=100),iteration)]