Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 复制数据后使用apply而不是loop_R - Fatal编程技术网

R 复制数据后使用apply而不是loop

R 复制数据后使用apply而不是loop,r,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 df1这个解决方案怎么样 df1 <- data.frame(

我正在使用以下代码:

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

df1这个解决方案怎么样

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)

df1只是
df1$y或
2:nrow(df1)
。好的,谢谢大家-也许可以写一个答案?谢谢。顺便说一句-
apply
函数是循环的。我的观点是,您似乎有一种(常见的)误解,即apply不是循环。此外,re。例如,请参阅performance,而不需要
sapply
(这是一个隐藏循环)。矢量化解决方案可用。见@utubun的上述评论。