<- 1:50 x
durch3-durch5
R
challenge
string
Aufgabe
Gegeben sei ein Vektor x
:
Schreiben Sie R-Code, der “durch3” ausgibt, wenn x
durch 3 teilbar ist und (auch) “durch5” ausgibt, wenn x
durch5 teilbar ist.
Hinweise:
- Orientieren Sie sich im Übrigen an den allgemeinen Hinweisen des Datenwerks.
Lösung
library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr 1.1.3 ✔ readr 2.1.4
✔ forcats 1.0.0 ✔ stringr 1.5.1
✔ ggplot2 3.4.4 ✔ tibble 3.2.1
✔ lubridate 1.9.3 ✔ tidyr 1.3.0
✔ purrr 1.0.2
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag() masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
<-
d tibble(
x = 1:50,
txt = ""
%>%
) mutate(txt = case_when(
%% 3) == 0 ~ str_c(txt, "_durch_3"),
(x TRUE ~ txt)
%>%
) mutate(txt = case_when(
%% 5) == 0 ~ str_c(txt, "_durch_5"),
(x TRUE ~ txt
))
So sieht die Tabelle aus:
d
# A tibble: 50 × 2
x txt
<int> <chr>
1 1 ""
2 2 ""
3 3 "_durch_3"
4 4 ""
5 5 "_durch_5"
6 6 "_durch_3"
7 7 ""
8 8 ""
9 9 "_durch_3"
10 10 "_durch_5"
# ℹ 40 more rows
So kann man sich dann den Text ausgeben lassen:
$txt d
[1] "" "" "_durch_3" ""
[5] "_durch_5" "_durch_3" "" ""
[9] "_durch_3" "_durch_5" "" "_durch_3"
[13] "" "" "_durch_3_durch_5" ""
[17] "" "_durch_3" "" "_durch_5"
[21] "_durch_3" "" "" "_durch_3"
[25] "_durch_5" "" "_durch_3" ""
[29] "" "_durch_3_durch_5" "" ""
[33] "_durch_3" "" "_durch_5" "_durch_3"
[37] "" "" "_durch_3" "_durch_5"
[41] "" "_durch_3" "" ""
[45] "_durch_3_durch_5" "" "" "_durch_3"
[49] "" "_durch_5"
Oder so:
$txt %>% discard(\(x) x == "") d
[1] "_durch_3" "_durch_5" "_durch_3" "_durch_3"
[5] "_durch_5" "_durch_3" "_durch_3_durch_5" "_durch_3"
[9] "_durch_5" "_durch_3" "_durch_3" "_durch_5"
[13] "_durch_3" "_durch_3_durch_5" "_durch_3" "_durch_5"
[17] "_durch_3" "_durch_3" "_durch_5" "_durch_3"
[21] "_durch_3_durch_5" "_durch_3" "_durch_5"
Categories:
- r
- challenge
- string