首页 > 解决方案 > r循环具有可变行的多个数据帧

问题描述

我担心有一个简单的解决方案:我有一组数据框,它们都包含相同的列。唯一的区别是每个数据帧中的行数不同。

假设 df1 有 10 行和 5 个变量,df2 有 23 行和 5 个变量,df3 有 7 行。

我要做的是为每个df的每一行分配另一个数据框dfX,根据df号和行号命名新的数据框。

dflist <- list(df1,df2,df3)

for(i in 1:length(dflist)){ 
  for(j in 1:nrow(dflist[[i]]))
    nam <- paste("bat",i,j,sep=".")
    df <- dfX
    assign(nam,df)   
}

它似乎有效,但它只给了我三个名为 df.1.10、df.2.23 和 df.3.7 的数据框。

我希望它返回 df.1.1、df.1.2 等等

标签: rloopsdataframedoublerename

解决方案


看起来您在第二个 for 循环中缺少 {}。示例中也未定义 dfX。请参阅下面的更新代码。为了清楚起见,我添加了一些评论。

# Sample data
df1 <- as.data.frame(matrix(42,10,5))
df2 <- as.data.frame(matrix(42,23,5))
df3 <- as.data.frame(matrix(42,7,5))
dflist <- list(df1,df2,df3)

# Loop through data frames
for(i in 1:length(dflist)){ 

  # Loop through rows
  for(j in 1:nrow(dflist[[i]])) {
    nam <- paste("bat",i,j,sep=".") # Create name
    df <- dflist[[i]][1:j,] # Subset data frame
    assign(nam,df) # Assign name
  }
}

# List workspace content
ls()

希望这能让你更接近你所需要的!


推荐阅读