※ 引述《girl5566 (5566520)》之铭言:
: 文章分类提示:
: - 问题: 当你想要问问题时,请使用这个类别
: [问题类型]:
: 程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
: [软件熟悉度]:
: 新手(没写过程式,R 是我的第一次)
: [问题叙述]:
: 想请问result 那栏为取绝对值后的最大值之原始值 result要如何取得?
: X Y MAX_ABS RESULT
: -3 5 5 5
: -5 3 5 -5
: [程式范例]:
: data <- data.frame(x = c(-3,-5), y = c(5,3))
: max_abs <- apply(abs(data),1,max)
: data <- cbind(data,max_abs)
: [环境叙述]:
: R3.1.2 win7 64bit
: [关键字]:
1. dplyr (只有两行)
library(dplyr)
data_df = data.frame(x = c(-3,-5), y = c(5,3))
data_df %>% mutate(result = ifelse(abs(x) > abs(y), x, y))
2. apply (可多行)
data_mat = matrix(c(-3,-5,5,3), 2)
loc_max = apply(abs(data_mat), 1, which.max)
result = data_mat[cbind(1:nrow(data_mat), loc_max)]