R 数据帧中循环的替代方案
我面临着运行代码所需时间的问题。基本上,我有几个列,最后一列中有一个键值(我在可复制示例中确定为平均值)。我希望它在低于该值时为1,在高于该值时为2 有没有更简单的方法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
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)
也给