【问题标题】:creating for loops using R, where each row form a dataframe does to different datafames使用 R 创建 for 循环,其中每一行形成一个数据帧,对不同的数据帧执行
【发布时间】:2022-11-17 07:27:53
【问题描述】:

您好我正在尝试创建一个循环,其中数据帧中的每一行都在不同数据帧中的特定位置。几天来我一直坚持这样做,如果有任何帮助,我将不胜感激!

这是我的“list_files”数据框

0.364618
0.944114
0.274912
0.600096
1.718930
1.071100
1.733920
0.349970
0.885879
0.254805
0.592313
1.539530
0.913408
1.741790
0.311971
0.877417
0.244049
0.541382
1.469480
0.926704
1.622540
0.317075
0.917018
0.233637
0.548263
1.513830
0.959897
1.611970

目标数据框:

df_fa

df_md

df_awf

df_daxon

df_de_axial

df_de_radial

df_de_tort

手动地,我试图将 list_files 中的每一行转到上面每个数据框中的特定位置

例如将每个数据帧的第 1:7 行从 list_files 复制到 [2,1]

df_fa[2,1]<-list_file[1,]      
df_md[2,1]<-list_file[2,]      
df_awf[2,1]<-list_file[3,]      
df_daxon[2,1]<-list_file[4,]      
df_de_axial[2,1]<-list_file[5,]      
df_de_radial[2,1]<-list_file[6,]     
df_de_tort[2,1]<-list_file[7,]

例如将每个数据帧的第 8:14 行从 list_files 复制到 [2,2]

df_fa[2,2]<-list_file[8,]
df_md[2,2]<-list_file[9,]
df_awf[2,2]<-list_file[10,]
df_daxon[2,2]<-list_file[11,]
df_de_axial[2,2]<-list_file[12,]
df_de_radial[2,2]<-list_file[13,]
df_de_tort[2,2]<-list_file[14,]

例如将每个数据帧的第 15:21 行从 list_files 复制到 [2,3]。

df_fa[2,3]<-list_file[15,]
df_md[2,3]<-list_file[16,]
df_awf[2,3]<-list_file[17,]
df_daxon[2,3]<-list_file[18,]
df_de_axial[2,3]<-list_file[19,]
df_de_radial[2,3]<-list_file[20,]
df_de_tort[2,3]<-list_file[21,]

例如将每个数据帧的 22:28 行从 list_files 复制到 [2,4]

df_fa[2,4]\<-list_file[22,]
df_md[2,4]<-list_file[23,]
df_awf[2,4]<-list_file[24,]
df_daxon[2,4]<-list_file[25,]
df_de_axial[2,4]<-list_file[26,]
df_de_radial[2,4]<-list_file[27,]
df_de_tort[2,4]<-list_file[28,]

我已经手动尝试编码,但是如果我想对多个数据帧重复该过程,那将是非常劳动密集型的

【问题讨论】:

  • 确认一下,您的每个目标 dfs 已经有一行,您想将这些值添加到第二行吗?您的目标数据框是否已经具有所需的列数?您制作这些数据框的更大目标是什么?
  • 我的每个目标 df 都有 64 行和 8 列。对于这个具体示例,我想将前 7 个值添加到第二行,每个数据框的第一列,接下来的 7 个值添加到第二行,每个数据框的第二列;接下来的 7 个值到第二行,每个数据帧的第三列,等等......直到我遍历 list_files 数据帧中的所有 28 个值。我更大的目标是创建 7 个不同的数据框,其中包含每一行的参与者值

标签: r loops


【解决方案1】:

根据您的问题,有多种解决方案。 这是我觉得很直观的一个:

由于必须将一列分解为四个连续的列,因此可以这样构造矩阵:

m <- matrix(list_file[1:28, 1, drop = TRUE], nrow = 7, ncol = 4)

然后将该矩阵分配为列:

df_fa[2,1:4] <- m[1,, drop=F]
df_md[2,1:4] <- m[2,, drop=F]
df_awf[2,1:4] <- m[3,, drop=F]
df_daxon[2,1:4] <- m[4,, drop=F]
df_de_axial[2,1:4] <- m[5,, drop=F]
df_de_radial[2,1:4] <- m[6,, drop=F]
df_de_tort[2,1:4] <- m[7,, drop=F]

【讨论】:

    猜你喜欢
    • 2020-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    相关资源
    最近更新 更多