【发布时间】:2017-10-12 20:25:25
【问题描述】:
我正在尝试使用 extract() 在我的测量值旁边添加一个“错误”列。但是,我认为我对正则表达式和/或 extract() 语法感到厌烦。不胜感激。
理想情况下,我应该得到一个带有列的长格式
Reading Category Measurement Error Sample
可重现的代码
Reading <- c(1,2,3,4)
Cat1 <- runif(4)*10
Cat1_err <- runif(4)/10
Cat2 <- runif(4)*10
Cat2_err <- runif(4)/10
Cat3 <- runif(4)*10
Cat3_err <- runif(4)/10
Sample <- c("X14","X23","X11","X10")
df_wide <- data.frame(Reading,Cat1,Cat1_err,Cat2,Cat2_err,Cat3,Cat3_err,Sample)
df_wide
Reading Cat1 Cat1_err Cat2 Cat2_err Cat3 Cat3_err Sample
1 1 7.375116 0.01014747 2.234376 0.08978868 5.373709 0.02245759 X14
2 2 5.097937 0.07036843 5.691806 0.05561866 1.823026 0.07658357 X23
3 3 2.034116 0.01689391 8.192971 0.03844054 4.242167 0.01036751 X11
4 4 9.129536 0.09130868 5.908125 0.05505775 5.747843 0.05774527 X10
df_long <- df_wide %>%
+ gather(key=Category, value=Measurement, Cat1:Cat3_err, factor_key = TRUE) %>%
+ extract(Measurement,c("Meas","Error"),"Cat\d_err", remove=FALSE)
Error in names(l) <- enc2utf8(into) :
'names' attribute [2] must be the same length as the vector [0]
【问题讨论】:
-
这个错误很容易修复:双反斜杠,
\\d。但是,它不会修复整个解决方案。
标签: r regex reshape2 tidyverse