复制数据后使用Apply而不是循环

时间:2019-02-17 17:12:56

标签: r

我正在使用以下代码:

df1 <- data.frame(
      x1 = 'a'
      , x2 = 'b'
      , y = 0
)


df1 <- do.call("rbind", replicate(10, df1, simplify = FALSE))

for (row in 1:nrow(df1)) {
    df1[row,]$y = (row - 1) 
}

df1

是否可以通过使用Apply系列函数而不是循环来改善这一点?谢谢!

1 个答案:

答案 0 :(得分:1)

该解决方案如何?

df1 <- data.frame(
    x1 = 'a'
    , x2 = 'b'
    , y = 0
)


df1 <- do.call("rbind", replicate(10, df1, simplify = FALSE))


df1$y <- sapply(1:nrow(df1), function(i)as.numeric(row.names(df1))[i]-1)