r循环使用可变行的多个数据帧

时间:2018-10-23 14:26:57

标签: r loops dataframe double rename

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

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

我要做的是将另一个数据帧dfX分配给每个df的每一行,并根据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等

1 个答案:

答案 0 :(得分:0)

似乎第二个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()

希望这能使您更接近所需!!