Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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 数据帧中循环的替代方案_R_Loops_Dataframe - Fatal编程技术网

R 数据帧中循环的替代方案

R 数据帧中循环的替代方案,r,loops,dataframe,R,Loops,Dataframe,我面临着运行代码所需时间的问题。基本上,我有几个列,最后一列中有一个键值(我在可复制示例中确定为平均值)。我希望它在低于该值时为1,在高于该值时为2 有没有更简单的方法 a <- c(1,3,5,6,4) b <- c(10,4,24,5,3) df <- data.frame (a,b) df$mean <- rowMeans (df) for (i in 1:5){ df[i,1:2] [df[i,1:2]<df$mean[i]] <- 1 df[i,1

我面临着运行代码所需时间的问题。基本上,我有几个列,最后一列中有一个键值(我在可复制示例中确定为平均值)。我希望它在低于该值时为1,在高于该值时为2

有没有更简单的方法

a <- c(1,3,5,6,4)
b <- c(10,4,24,5,3)
df <- data.frame (a,b)
df$mean <- rowMeans (df)

for (i in 1:5){
df[i,1:2] [df[i,1:2]<df$mean[i]] <- 1
df[i,1:2] [df[i,1:2]>df$mean[i]] <- 2
}
a你只需

df[1:2] <- (df[1:2] > df$mean) + 1 #removed as.integer as per @akrun's comment
你可以简单地做

df[1:2] <- (df[1:2] > df$mean) + 1 #removed as.integer as per @akrun's comment

尽可能避免在R中使用循环

使用dplyr中的每个mutate_的替代解决方案

df %>% mutate_each(funs(ifelse(mean>.,1,2)), 1:2)
也给


尽可能避免在R中使用循环

使用dplyr中的每个mutate_的替代解决方案

df %>% mutate_each(funs(ifelse(mean>.,1,2)), 1:2)
也给