首页 > 解决方案 > 从数据框R中的字符列表中用字符x次填充一列

问题描述

我想用列表中的字符 x 次填充数据框,但是当我尝试使用函数fill时它不起作用。我的数据集非常大,我需要在一个循环中做所有事情,因为我需要为下一次迭代重新做一遍。到目前为止,这是我的代码

sp <- c("Deer", "Moose", "Wildboar", "Bear", "Wolf")
mon <- 1:7

m <- matrix(nrow = 35, ncol = 2)
data <-  as.data.frame(m)
colnames(m) <- c("Species", "Month")

现在,我想用 1-7 填充“月”列 5 次,所以该列看起来像这样(11111222223333344444555556666677777)。我想用 DeerDeerDeerDeerDeerMooseMooseMooseMooseMooseWildboarWildboarWildboarWildboarWildboarBearBearBearBearWolfWolfWolfWolfWolf 填写“物种”列。

我尝试循环执行此操作,但它只创建了四个新列,并且只用鹿、驼鹿、野猪和熊填充了前四行。

  for(i in 1:length(sp)) {
    for(j in 1:length(mon)) {
      data[i,j] <- sp[i]
    }
  }

有没有其他人遇到过同样的问题?

标签: rdataframeloopsrowfill

解决方案


您可以使用repwitheach命令。

df <- data.frame(Species = rep(sp, each = 7),  Month = rep(mon, each = 5))
df

#    Species Month
#1      Deer     1
#2      Deer     1
#3      Deer     1
#4      Deer     1
#5      Deer     1
#6      Deer     2
#7      Deer     2
#8     Moose     2
#9     Moose     2
#10    Moose     2
#....
#....

推荐阅读