r - 带有管道的 if 语句
问题描述
我看过一些关于如何使用 if 语句或使用管道的条件的文章,但我不确定如何将其应用于我的情况。除了对我的问题的具体答案外,我还希望对添加带有管道的 if 语句进行更一般的解释,以便我能够处理大多数情况。
我试图学习在下面使用这个答案(使用 if() 在 dplyr 管道链中使用 select()),但我不明白我们为什么要提供“。” 作为下面第三行的论点以及我应该何时这样做
mtcars %>%
group_by(cyl) %>%
{ if (cond) filter(., am == 1) else . } %>%
summarise(m = mean(wt))
这是我的数据示例:
df_parse<-
structure(list(value = c("HURESPLI\t2\tLINE NUMBER OF THE RESPONDENT\tCURRENT\t22 - 23",
"FILLER\t2\t\t27 - 28", "HUBUSL1\t2\tENTER LINE NUMBER\t81 - 82",
"GEDIV\t1\tDIVISION\t91 - 91", "GESTFIPS\t2\tFEDERAL INFORMATION\t93 - 94"
), starts_with_position = c(TRUE, TRUE, TRUE, TRUE, TRUE), missing_vars = c("HUFINAL\t FINAL OUTCOME CODE\t 24 - 26",
"HETENURE\t ARE YOUR LIVING QUARTERS... (READ ANSWER CATEGORIES)\t 29 - 30",
"FOR HUBUS = 1 VALID ENTRIES 83 - 84", " 92 - 92", " 95 - 95"
)), row.names = c(NA, 5L), class = "data.frame")
我正在尝试使用 extract (tidyr) 和 gsub 分离 missing_vars 列,如下所示:
df_parse<-
df_parse %>%
mutate(dup_value2 = missing_vars) %>%
extract(col = dup_value2, into = "position2", regex = "(\\d+\\s*-\\s*\\d+)$") %>%
mutate(id2 = gsub(pattern = "\\t.*", replacement = "", x = missing_vars)) %>%
mutate(desc2 = gsub(".*\\\t\\d+\\\t", replacement = "", x = missing_vars)) %>%
mutate(desc2 = gsub("(\\d+\\s*-\\s*\\d+)$", replacement = "", x = missing_vars))
这工作正常,但我想在这个管道的开头添加一个条件,其中 df_parse$starts_with_position == TRUE
像这样的东西?(我知道它不起作用)
df_parse %>% if(starts_with_position==TRUE){
mutate(dup_value2 = missing_vars) %>%
extract(col = dup_value2, into = "position2", regex = "(\\d+\\s*-\\s*\\d+)$") %>%
mutate(id2 = gsub(pattern = "\\t.*", replacement = "", x = missing_vars)) %>%
mutate(desc2 = gsub(".*\\\t\\d+\\\t", replacement = "", x = missing_vars)) %>%
mutate(desc2 = gsub("(\\d+\\s*-\\s*\\d+)$", replacement = "", x = missing_vars))
}else ""
解决方案
推荐阅读
- python - Python:如何运行一个简单的 P2P 网络框架
- python - 将 Python Systemd 输出记录到日志文件
- terminal - 如何将终端 env COLUMNS 和 LINES 传递给 docker-compose.yml?
- php - 如何使用 CakePHP 表保存方法用“/”保存 fcolumn?
- javascript - Mongodb改变数组的顺序
- php - Laravel“php artisan migrate”给出错误
- c# - 使用 ASP.NET 和 Owin 时,我在哪里可以设置上次登录时间?
- r - 从数据框中的其他行中提取和使用信息?
- math - 带有十六进制值的 ARM 汇编问题
- c# - C# .NET 序列化程序是原子的吗?