【问题标题】:r loop multiple data frames with variable rows [closed]r循环具有可变行的多个数据帧[关闭]
【发布时间】:2019-03-27 20:06:05
【问题描述】:

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

假设 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 等等

【问题讨论】:

  • library(fortunes); fortune(236)
  • 根据您的示例,您想让相同的 dfX 重复 40(10+23+7) 次,用不同的名称命名?为什么?
  • dfX 包含大量能量数据。我将把这个能量数据应用到每个新创建的数据帧中,这样我就可以应用计算并确定每个 df 的每个潜力。

标签: r loops dataframe double rename


【解决方案1】:

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

# 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()

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 2021-12-25
    相关资源
    最近更新 更多