% Options for packages loaded elsewhere
\PassOptionsToPackage{unicode}{hyperref}
\PassOptionsToPackage{hyphens}{url}
%
\documentclass[
  8pt,
  ignorenonframetext,
]{beamer}
\author{}
\date{\vspace{-2.5em}}

\usepackage{pgfpages}
\setbeamertemplate{caption}[numbered]
\setbeamertemplate{caption label separator}{: }
\setbeamercolor{caption name}{fg=normal text.fg}
\beamertemplatenavigationsymbolsempty
% Prevent slide breaks in the middle of a paragraph
\widowpenalties 1 10000
\raggedbottom
\setbeamertemplate{part page}{
  \centering
  \begin{beamercolorbox}[sep=16pt,center]{part title}
    \usebeamerfont{part title}\insertpart\par
  \end{beamercolorbox}
}
\setbeamertemplate{section page}{
  \centering
  \begin{beamercolorbox}[sep=12pt,center]{part title}
    \usebeamerfont{section title}\insertsection\par
  \end{beamercolorbox}
}
\setbeamertemplate{subsection page}{
  \centering
  \begin{beamercolorbox}[sep=8pt,center]{part title}
    \usebeamerfont{subsection title}\insertsubsection\par
  \end{beamercolorbox}
}
\AtBeginPart{
  \frame{\partpage}
}
\AtBeginSection{
  \ifbibliography
  \else
    \frame{\sectionpage}
  \fi
}
\AtBeginSubsection{
  \frame{\subsectionpage}
}
\usepackage{amsmath,amssymb}
\usepackage{lmodern}
\usepackage{iftex}
\ifPDFTeX
  \usepackage[T1]{fontenc}
  \usepackage[utf8]{inputenc}
  \usepackage{textcomp} % provide euro and other symbols
\else % if luatex or xetex
  \usepackage{unicode-math}
  \defaultfontfeatures{Scale=MatchLowercase}
  \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1}
\fi
% Use upquote if available, for straight quotes in verbatim environments
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
\IfFileExists{microtype.sty}{% use microtype if available
  \usepackage[]{microtype}
  \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
}{}
\makeatletter
\@ifundefined{KOMAClassName}{% if non-KOMA class
  \IfFileExists{parskip.sty}{%
    \usepackage{parskip}
  }{% else
    \setlength{\parindent}{0pt}
    \setlength{\parskip}{6pt plus 2pt minus 1pt}}
}{% if KOMA class
  \KOMAoptions{parskip=half}}
\makeatother
\usepackage{xcolor}
\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}}
\hypersetup{
  hidelinks,
  pdfcreator={LaTeX via pandoc}}
\urlstyle{same} % disable monospaced font for URLs
\newif\ifbibliography
\usepackage{color}
\usepackage{fancyvrb}
\newcommand{\VerbBar}{|}
\newcommand{\VERB}{\Verb[commandchars=\\\{\}]}
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}}
% Add ',fontsize=\small' for more characters per line
\usepackage{framed}
\definecolor{shadecolor}{RGB}{248,248,248}
\newenvironment{Shaded}{\begin{snugshade}}{\end{snugshade}}
\newcommand{\AlertTok}[1]{\textcolor[rgb]{0.94,0.16,0.16}{#1}}
\newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
\newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.77,0.63,0.00}{#1}}
\newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.00,0.00,0.81}{#1}}
\newcommand{\BuiltInTok}[1]{#1}
\newcommand{\CharTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}}
\newcommand{\CommentTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textit{#1}}}
\newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
\newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}}
\newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.13,0.29,0.53}{\textbf{#1}}}
\newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.13,0.29,0.53}{#1}}
\newcommand{\DecValTok}[1]{\textcolor[rgb]{0.00,0.00,0.81}{#1}}
\newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
\newcommand{\ErrorTok}[1]{\textcolor[rgb]{0.64,0.00,0.00}{\textbf{#1}}}
\newcommand{\ExtensionTok}[1]{#1}
\newcommand{\FloatTok}[1]{\textcolor[rgb]{0.00,0.00,0.81}{#1}}
\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}}
\newcommand{\ImportTok}[1]{#1}
\newcommand{\InformationTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
\newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.13,0.29,0.53}{\textbf{#1}}}
\newcommand{\NormalTok}[1]{#1}
\newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.81,0.36,0.00}{\textbf{#1}}}
\newcommand{\OtherTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{#1}}
\newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textit{#1}}}
\newcommand{\RegionMarkerTok}[1]{#1}
\newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}}
\newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}}
\newcommand{\StringTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}}
\newcommand{\VariableTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}}
\newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}}
\newcommand{\WarningTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
\setlength{\emergencystretch}{3em} % prevent overfull lines
\providecommand{\tightlist}{%
  \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
\setcounter{secnumdepth}{-\maxdimen} % remove section numbering
% type setting
% ------------------------------------------------------------------------------
\usepackage[german]{babel}     

% fonts
% ------------------------------------------------------------------------------
\usefonttheme{professionalfonts}

% slide title and horizontal line
% ------------------------------------------------------------------------------
\setbeamertemplate{frametitle}{%
    \vskip-30pt \color{black}\large%
    \begin{minipage}[b][23pt]{120mm}%
    \flushleft\insertframetitle%
    \end{minipage}%
}

\setbeamertemplate{headline}										
{
\vskip10pt\hfill\hspace{3.5mm} 										 
\vskip15pt\color{black}\rule{\textwidth}{0.4pt} 					 
}

% slide number
% ---------------------------------------------------------------
\setbeamertemplate{navigation symbols}{}
\setbeamertemplate{footline}
{
\vskip5pt
\vskip2pt
\makebox[123mm]{\hspace{7.5mm}
\hfill Programmierung und Deskriptive Statistik $\vert$ 
\copyright $ $ 2022 Dirk Ostwald CC BY-NC-SA 4.0 $\vert$ 
Folie \insertframenumber}
\vskip4pt
}

% block color scheme
% ------------------------------------------------------------------------------
% colors
\definecolor{white}{RGB}{255,255,255}
\definecolor{grey}{RGB}{235,235,235}
\definecolor{lightgrey}{RGB}{245,245,245}
\definecolor{LightBlue}{RGB}{220,220,255}
\definecolor{darkblue}{RGB}{51, 51, 153}

% definitions and theorems
\setbeamercolor{block title}{fg = black, bg = grey}
\setbeamercolor{block body}{fg = black, bg = lightgrey}

% general line spacing 
% ------------------------------------------------------------------------------
\linespread{1.3}

% local line spacing
% ------------------------------------------------------------------------------
\usepackage{setspace}

% colors
% -----------------------------------------------------------------------------
\usepackage{color}

% justified text
% ------------------------------------------------------------------------------
\usepackage{ragged2e}
\usepackage{etoolbox}
\apptocmd{\frame}{}{\justifying}{}

% bullet point lists
% -----------------------------------------------------------------------------
\setbeamertemplate{itemize item}[circle]
\setbeamertemplate{itemize subitem}[circle]
\setbeamertemplate{itemize subsubitem}[circle]
\setbeamercolor{itemize item}{fg = black}
\setbeamercolor{itemize subitem}{fg = black}
\setbeamercolor{itemize subsubitem}{fg = black}
\setbeamercolor{enumerate item}{fg = black}
\setbeamercolor{enumerate subitem}{fg = black}
\setbeamercolor{enumerate subsubitem}{fg = black}
\setbeamerfont{itemize/enumerate body}{}
\setbeamerfont{itemize/enumerate subbody}{size = \normalsize}
\setbeamerfont{itemize/enumerate subsubbody}{size = \normalsize}

% color links
% ------------------------------------------------------------------------------
\usepackage{hyperref}
\definecolor{urls}{RGB}{204,0,0}
\hypersetup{colorlinks, citecolor = darkblue, urlcolor = urls}


% additional math commands
% ------------------------------------------------------------------------------
\usepackage{bm}                                         % bold math symbols
\newcommand{\niton}{\not\owns}

% text highlighting
% ------------------------------------------------------------------------------
\usepackage{soul}
\makeatletter
\let\HL\hl
\renewcommand\hl{%
  \let\set@color\beamerorig@set@color
  \let\reset@color\beamerorig@reset@color
  \HL}
\makeatother

% equation highlighting
% -----------------------------------------------------------------------------
\newcommand{\highlight}[2][yellow]{\mathchoice%
  {\colorbox{#1}{$\displaystyle#2$}}%
  {\colorbox{#1}{$\textstyle#2$}}%
  {\colorbox{#1}{$\scriptstyle#2$}}%
  {\colorbox{#1}{$\scriptscriptstyle#2$}}}%

% additional mathematical operators
% ------------------------------------------------------------------------------
\DeclareMathOperator*{\argmax}{arg\,max}
\DeclareMathOperator*{\argmin}{arg\,min}

\ifLuaTeX
  \usepackage{selnolig}  % disable illegal ligatures
\fi

\begin{document}

\begin{frame}[plain]{}
\protect\hypertarget{section}{}
\center

\begin{center}\includegraphics[width=0.2\linewidth]{5_Abbildungen/pds_5_otto} \end{center}

\vspace{2mm}

\huge

Programmierung und Deskriptive Statistik \vspace{6mm}

\large

BSc Psychologie WiSe 2021/22

\vspace{6mm}
\large

Prof.~Dr.~Dirk Ostwald
\end{frame}

\begin{frame}[plain]{}
\protect\hypertarget{section-1}{}
\vfill
\huge
\begin{center}
(5) Listen und Dataframes
\end{center}
\vfill
\end{frame}

\begin{frame}{}
\protect\hypertarget{section-2}{}
\setstretch{3}
\vfill
\large

Listen

Dataframes

Übungen und Selbstkontrollfragen \vfill
\end{frame}

\begin{frame}{}
\protect\hypertarget{section-3}{}
\setstretch{3}
\vfill
\large

\textbf{Listen}

Dataframes

Übungen und Selbstkontrollfragen \vfill
\end{frame}

\begin{frame}{Listen}
\protect\hypertarget{listen}{}
\setstretch{2}

\textcolor{darkblue}{Übersicht}

\begin{itemize}
\tightlist
\item
  Listen sind geordnete Folgen von R Objekten.
\item
  Listen sind rekursiv, können also Objekte verschiedenen Datentyps
  enthalten.
\item
  Defacto enthalten Listen keine Objekte, sondern Referenzen zu
  Objekten.
\end{itemize}

\begin{center}\includegraphics[width=0.3\linewidth]{5_Abbildungen/pds_5_list_representation} \end{center}

\begin{itemize}
\tightlist
\item
  Listen sind ein wesentlicher Baustein von Dataframes.
\end{itemize}
\end{frame}

\begin{frame}[fragile]{Listen}
\protect\hypertarget{listen-1}{}
\setstretch{1.1}

\textcolor{darkblue}{Erzeugung}

\small

Direkte Konkatenation von Listenelementen mit \texttt{list()}

\footnotesize

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{L }\OtherTok{=} \FunctionTok{list}\NormalTok{(}\FunctionTok{c}\NormalTok{(}\DecValTok{1}\NormalTok{,}\DecValTok{4}\NormalTok{,}\DecValTok{5}\NormalTok{),                          }\CommentTok{\# Liste mit einem Vektor,}
                 \FunctionTok{matrix}\NormalTok{(}\DecValTok{1}\SpecialCharTok{:}\DecValTok{8}\NormalTok{, }\AttributeTok{nrow =} \DecValTok{2}\NormalTok{),     }\CommentTok{\# einer Matrix und}
\NormalTok{                 exp)                       }\CommentTok{\# einer Funktion}
\NormalTok{[[}\DecValTok{1}\NormalTok{]]                                       }\CommentTok{\# 1. Listenelement}
\NormalTok{[}\DecValTok{1}\NormalTok{] }\DecValTok{1} \DecValTok{4} \DecValTok{5}
\NormalTok{[[}\DecValTok{2}\NormalTok{]]                                       }\CommentTok{\# 2. Listenelement}
\NormalTok{     [,}\DecValTok{1}\NormalTok{] [,}\DecValTok{2}\NormalTok{] [,}\DecValTok{3}\NormalTok{] [,}\DecValTok{4}\NormalTok{]}
\NormalTok{[}\DecValTok{1}\NormalTok{,]    }\DecValTok{1}    \DecValTok{3}    \DecValTok{5}    \DecValTok{7}
\NormalTok{[}\DecValTok{2}\NormalTok{,]    }\DecValTok{2}    \DecValTok{4}    \DecValTok{6}    \DecValTok{8}
\NormalTok{[[}\DecValTok{3}\NormalTok{]]}
\ControlFlowTok{function}\NormalTok{ (x)  }\FunctionTok{.Primitive}\NormalTok{(}\StringTok{"exp"}\NormalTok{)             }\CommentTok{\# 3. Listenelement}
\end{Highlighting}
\end{Shaded}

\small

Listen können Elemente von Listen sein

\footnotesize

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{L }\OtherTok{=} \FunctionTok{list}\NormalTok{(}\FunctionTok{list}\NormalTok{(}\DecValTok{1}\NormalTok{))                           }\CommentTok{\# Liste mit Element 1 in einer Liste}
\NormalTok{[[}\DecValTok{1}\NormalTok{]]}
\NormalTok{[[}\DecValTok{1}\NormalTok{]][[}\DecValTok{1}\NormalTok{]]}
\NormalTok{[}\DecValTok{1}\NormalTok{] }\DecValTok{1}
\end{Highlighting}
\end{Shaded}

\small

\texttt{c()} kann zum Verbinden von Listen genutzt werden

\footnotesize

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{L }\OtherTok{=} \FunctionTok{c}\NormalTok{(}\FunctionTok{list}\NormalTok{(pi), }\FunctionTok{list}\NormalTok{(}\StringTok{"a"}\NormalTok{))                  }\CommentTok{\# Konkatenation zweier Listen}
\NormalTok{[[}\DecValTok{1}\NormalTok{]]                                       }\CommentTok{\# 1. Listenelement}
\NormalTok{[}\DecValTok{1}\NormalTok{] }\FloatTok{3.141593}
\NormalTok{[[}\DecValTok{2}\NormalTok{]]                                       }\CommentTok{\# 2. Listenelement}
\NormalTok{[}\DecValTok{1}\NormalTok{] }\StringTok{"a"}
\end{Highlighting}
\end{Shaded}
\end{frame}

\begin{frame}[fragile]{Listen}
\protect\hypertarget{listen-2}{}
\textcolor{darkblue}{Charakterisierung} \footnotesize

Der Datentyp von Listen ist \texttt{list}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{L }\OtherTok{=} \FunctionTok{list}\NormalTok{(}\DecValTok{1}\SpecialCharTok{:}\DecValTok{2}\NormalTok{, }\StringTok{"a"}\NormalTok{, log)             }\CommentTok{\# Erzeugung einer Liste}
\FunctionTok{typeof}\NormalTok{(L)                           }\CommentTok{\# Typenbestimmung}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
> [1] "list"
\end{verbatim}

\texttt{length()} gibt die Anzahl der Toplevel Listenelemente aus

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{L }\OtherTok{=} \FunctionTok{list}\NormalTok{(}\DecValTok{1}\SpecialCharTok{:}\DecValTok{2}\NormalTok{, }\FunctionTok{list}\NormalTok{(}\StringTok{"a"}\NormalTok{, pi), exp)   }\CommentTok{\# Liste mit drei Toplevelelementen}
\FunctionTok{length}\NormalTok{(L)                           }\CommentTok{\# length() ignoriert Elementinhalte, length() von L ist also 3}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
> [1] 3
\end{verbatim}

Die Dimension, Zeilen-, und Spaltenanzahl von Listen ist \texttt{NULL}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{L }\OtherTok{=} \FunctionTok{list}\NormalTok{(}\DecValTok{1}\SpecialCharTok{:}\DecValTok{2}\NormalTok{, }\StringTok{"a"}\NormalTok{, sin)             }\CommentTok{\# eine Liste}
\FunctionTok{dim}\NormalTok{(L)                              }\CommentTok{\# Die Dimension von Listen ist NULL}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
> NULL
\end{verbatim}

\begin{Shaded}
\begin{Highlighting}[]
\FunctionTok{nrow}\NormalTok{(L)                             }\CommentTok{\# Die Zeilenanzahl von Listen ist NULL}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
> NULL
\end{verbatim}

\begin{Shaded}
\begin{Highlighting}[]
\FunctionTok{ncol}\NormalTok{(L)                             }\CommentTok{\# Die Spaltenanzahl von Listen ist NULL}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
> NULL
\end{verbatim}
\end{frame}

\begin{frame}[fragile]{Listen}
\protect\hypertarget{listen-3}{}
\textcolor{darkblue}{Indizierung} \small

Einfache eckige Klammern {[} {]} indizieren Listenelemente als Listen

\footnotesize

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{L  }\OtherTok{=} \FunctionTok{list}\NormalTok{(}\DecValTok{1}\SpecialCharTok{:}\DecValTok{3}\NormalTok{, }\StringTok{"a"}\NormalTok{, exp)            }\CommentTok{\# eine Liste}
\NormalTok{l1 }\OtherTok{=}\NormalTok{ L[}\DecValTok{1}\NormalTok{]                           }\CommentTok{\# Indizierung eines Listenelements}
\NormalTok{[[}\DecValTok{1}\NormalTok{]]                               }\CommentTok{\# das Listenelement l1}
\NormalTok{[}\DecValTok{1}\NormalTok{] }\DecValTok{1} \DecValTok{2} \DecValTok{3}                           \CommentTok{\# der Inhalt von Listenelement l1}
\FunctionTok{typeof}\NormalTok{(l1)                          }\CommentTok{\# Typbestimmung von l1}
\NormalTok{[}\DecValTok{1}\NormalTok{] }\StringTok{"list"}                          \CommentTok{\# L[] gibt eine Liste aus}
\end{Highlighting}
\end{Shaded}

\small

Doppelte eckige Klammern {[}{[} {]}{]} indizieren den Inhalt von
Listenelementen

\footnotesize

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{L  }\OtherTok{=} \FunctionTok{list}\NormalTok{(}\DecValTok{1}\SpecialCharTok{:}\DecValTok{3}\NormalTok{, }\StringTok{"a"}\NormalTok{, exp)            }\CommentTok{\# eine Liste}
\NormalTok{i2 }\OtherTok{=}\NormalTok{ L[[}\DecValTok{2}\NormalTok{]]                         }\CommentTok{\# Indizierung des Listenelementinhalts}
\NormalTok{[}\DecValTok{1}\NormalTok{] }\StringTok{"a"}                             \CommentTok{\# der Inhalt von Listenelement L[2]}
\FunctionTok{typeof}\NormalTok{(i2)                          }\CommentTok{\# Typbestimmung von i2}
\NormalTok{[}\DecValTok{1}\NormalTok{] }\StringTok{"character"}                     \CommentTok{\# L[[]] gibt den Listenelementinhalt aus}
\end{Highlighting}
\end{Shaded}

\small

Ersetzen von Listenelement(inhalt)en

\footnotesize

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{L       }\OtherTok{=} \FunctionTok{list}\NormalTok{(}\DecValTok{1}\SpecialCharTok{:}\DecValTok{3}\NormalTok{, }\StringTok{"a"}\NormalTok{, exp)       }\CommentTok{\# eine Liste}
\NormalTok{L[}\DecValTok{1}\NormalTok{]    }\OtherTok{=} \DecValTok{4}\SpecialCharTok{:}\DecValTok{6}                       \CommentTok{\# keine Typkonversion, Fehlermeldung}
\NormalTok{L[}\DecValTok{1}\NormalTok{]    }\OtherTok{=} \FunctionTok{list}\NormalTok{(}\DecValTok{4}\SpecialCharTok{:}\DecValTok{6}\NormalTok{)                 }\CommentTok{\# Ersetzung des 1. Listenelementes}
\NormalTok{L[[}\DecValTok{3}\NormalTok{]]  }\OtherTok{=} \StringTok{"c"}                       \CommentTok{\# Ersetzung des 3. Listenelementinhaltes}
\end{Highlighting}
\end{Shaded}
\end{frame}

\begin{frame}[fragile]{Listen}
\protect\hypertarget{listen-4}{}
\textcolor{darkblue}{Indizierung}

\small

Die Prinzipien der Listenindizierung sind analog zur Vektorindizierung

\footnotesize

Vektoren positiver Zahlen adressieren entsprechende Elemente

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{L }\OtherTok{=} \FunctionTok{list}\NormalTok{(}\DecValTok{1}\SpecialCharTok{:}\DecValTok{3}\NormalTok{, }\StringTok{"a"}\NormalTok{, pi)              }\CommentTok{\# eine Liste}
\NormalTok{l }\OtherTok{=}\NormalTok{ L[}\FunctionTok{c}\NormalTok{(}\DecValTok{1}\NormalTok{,}\DecValTok{3}\NormalTok{)]                       }\CommentTok{\# 1. und 3. Listenelement}
\NormalTok{[[}\DecValTok{1}\NormalTok{]]                               }\CommentTok{\# 1. Listenelement}
\NormalTok{[}\DecValTok{1}\NormalTok{] }\DecValTok{1} \DecValTok{2} \DecValTok{3}
\NormalTok{[[}\DecValTok{2}\NormalTok{]]                               }\CommentTok{\# 2. Listenelement}
\NormalTok{[}\DecValTok{1}\NormalTok{] }\FloatTok{3.141593}
\end{Highlighting}
\end{Shaded}

Vektoren negativer Zahlen adressieren komplementäre Elemente

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{L }\OtherTok{=} \FunctionTok{list}\NormalTok{(}\DecValTok{1}\SpecialCharTok{:}\DecValTok{3}\NormalTok{, }\StringTok{"a"}\NormalTok{, pi)              }\CommentTok{\# eine Liste}
\NormalTok{l }\OtherTok{=}\NormalTok{ L[}\SpecialCharTok{{-}}\FunctionTok{c}\NormalTok{(}\DecValTok{1}\NormalTok{,}\DecValTok{3}\NormalTok{)]                      }\CommentTok{\# 2. Listenelement}
\NormalTok{[}\DecValTok{1}\NormalTok{] }\StringTok{"a"}
\end{Highlighting}
\end{Shaded}

Logische Vektoren adressieren Elemente mit TRUE.

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{L }\OtherTok{=} \FunctionTok{list}\NormalTok{(}\DecValTok{1}\SpecialCharTok{:}\DecValTok{3}\NormalTok{, }\StringTok{"a"}\NormalTok{, pi)              }\CommentTok{\# eine Liste}
\NormalTok{l }\OtherTok{=}\NormalTok{ L[}\FunctionTok{c}\NormalTok{(T,T,F)]                     }\CommentTok{\# 1. und 2. Listenelement}
\NormalTok{[[}\DecValTok{1}\NormalTok{]]                               }\CommentTok{\# 1. Listenelement}
\NormalTok{[}\DecValTok{1}\NormalTok{] }\DecValTok{1} \DecValTok{2} \DecValTok{3}
\NormalTok{[[}\DecValTok{2}\NormalTok{]]                               }\CommentTok{\# 2. Listenelement}
\NormalTok{[}\DecValTok{1}\NormalTok{] }\StringTok{"a"}
\end{Highlighting}
\end{Shaded}
\end{frame}

\begin{frame}[fragile]{Listen}
\protect\hypertarget{listen-5}{}
\textcolor{darkblue}{Indizierung}

\small

Listenelementen können bei Erzeugung Namen gegeben werden

\footnotesize

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{L }\OtherTok{=} \FunctionTok{list}\NormalTok{(}\AttributeTok{greta  =} \DecValTok{1}\SpecialCharTok{:}\DecValTok{3}\NormalTok{,              }\CommentTok{\# eine Liste mit benannten Elementen}
         \AttributeTok{luisa  =} \StringTok{"a"}\NormalTok{,}
         \AttributeTok{carla  =}\NormalTok{ exp)}
\SpecialCharTok{$}\NormalTok{greta                              }\CommentTok{\# 1. Listenelement}
\NormalTok{[}\DecValTok{1}\NormalTok{] }\DecValTok{1} \DecValTok{2} \DecValTok{3}
\SpecialCharTok{$}\NormalTok{luisa                              }\CommentTok{\# 2. Listenelement}
\NormalTok{[}\DecValTok{1}\NormalTok{] }\StringTok{"a"}
\SpecialCharTok{$}\NormalTok{carla                              }\CommentTok{\# 3. Listenelement}
\ControlFlowTok{function}\NormalTok{ (x)  }\FunctionTok{.Primitive}\NormalTok{(}\StringTok{"exp"}\NormalTok{)}
\end{Highlighting}
\end{Shaded}

\small

Listenelementen können mit \texttt{names()} Namen gegeben werden

\footnotesize

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{K        }\OtherTok{=} \FunctionTok{list}\NormalTok{(}\DecValTok{1}\SpecialCharTok{:}\DecValTok{2}\NormalTok{, }\ConstantTok{TRUE}\NormalTok{)          }\CommentTok{\# eine unbenannte Liste}
\FunctionTok{names}\NormalTok{(K) }\OtherTok{=} \FunctionTok{c}\NormalTok{(}\StringTok{"Frodo"}\NormalTok{, }\StringTok{"Sam"}\NormalTok{)        }\CommentTok{\# Namensgebung mit names()}
\SpecialCharTok{$}\NormalTok{Frodo                              }\CommentTok{\# 1.Listenelement}
\NormalTok{[}\DecValTok{1}\NormalTok{] }\DecValTok{1} \DecValTok{2}
\SpecialCharTok{$}\NormalTok{Sam                                }\CommentTok{\# 2. Listelement}
\NormalTok{[}\DecValTok{1}\NormalTok{] }\ConstantTok{TRUE}
\end{Highlighting}
\end{Shaded}
\end{frame}

\begin{frame}[fragile]{Listen}
\protect\hypertarget{listen-6}{}
\textcolor{darkblue}{Indizierung}

\small

Listenelemente und Listenelementinhalte können mit Namen indiziert
werden

\footnotesize

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{L }\OtherTok{=} \FunctionTok{list}\NormalTok{(}\AttributeTok{greta  =} \DecValTok{1}\SpecialCharTok{:}\DecValTok{3}\NormalTok{,     }\CommentTok{\# eine Liste mit benannten Elementen}
         \AttributeTok{luisa  =} \StringTok{"a"}\NormalTok{,}
         \AttributeTok{carla =}\NormalTok{ exp)}
\NormalTok{L[}\StringTok{"carla"}\NormalTok{]                 }\CommentTok{\# Listenelementindizierung}
\NormalTok{L[[}\StringTok{"carla"}\NormalTok{]]               }\CommentTok{\# Listenelementinhaltsinindizierung}
\end{Highlighting}
\end{Shaded}

\small

Listenelementinhalte können mit dem \texttt{\$} Operator indiziert
werden

\footnotesize

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{L }\OtherTok{=} \FunctionTok{list}\NormalTok{(}\AttributeTok{greta  =} \DecValTok{1}\SpecialCharTok{:}\DecValTok{3}\NormalTok{,      }\CommentTok{\# eine Liste mit benannten Elementen}
         \AttributeTok{luisa  =} \StringTok{"a"}\NormalTok{,}
         \AttributeTok{carla =}\NormalTok{ exp)}
\NormalTok{L}\SpecialCharTok{$}\NormalTok{greta                     }\CommentTok{\# Listenelementinhalt}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
> [1] 1 2 3
\end{verbatim}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{L}\SpecialCharTok{$}\NormalTok{luisa                     }\CommentTok{\# Listenelementinhalt}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
> [1] "a"
\end{verbatim}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{L}\SpecialCharTok{$}\NormalTok{carla                     }\CommentTok{\# Listenelementinhalt}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
> function (x)  .Primitive("exp")
\end{verbatim}
\end{frame}

\begin{frame}[fragile]{Listen}
\protect\hypertarget{listen-7}{}
\textcolor{darkblue}{Arithmetik}

\small

Listenarithmetik ist nicht definiert, da Listenelemente
unterschiedlichen Typs sein können

\footnotesize

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{L1 }\OtherTok{=} \FunctionTok{list}\NormalTok{(}\DecValTok{1}\SpecialCharTok{:}\DecValTok{3}\NormalTok{, }\StringTok{"a"}\NormalTok{ )        }\CommentTok{\# eine Liste}
\NormalTok{L2 }\OtherTok{=} \FunctionTok{list}\NormalTok{(T, exp )          }\CommentTok{\# eine Liste}
\NormalTok{L1}\SpecialCharTok{+}\NormalTok{L2                       }\CommentTok{\# Versuch der Listenaddition}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
> Error in L1 + L2: nicht-numerisches Argument für binären Operator
\end{verbatim}

\small

Listenelementinhalte können bei Passung jedoch arithmetisch verknüpft
werden

\footnotesize

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{L1 }\OtherTok{=} \FunctionTok{list}\NormalTok{(}\DecValTok{1}\SpecialCharTok{:}\DecValTok{3}\NormalTok{, pi )         }\CommentTok{\# eine Liste}
\NormalTok{L2 }\OtherTok{=} \FunctionTok{list}\NormalTok{(}\DecValTok{4}\SpecialCharTok{:}\DecValTok{6}\NormalTok{, exp )        }\CommentTok{\# eine Liste}
\NormalTok{L1[[}\DecValTok{1}\NormalTok{]] }\SpecialCharTok{+}\NormalTok{ L2[[}\DecValTok{1}\NormalTok{]]           }\CommentTok{\# Addition  der 1. Listenelementinhalte,  [1+4, 2+5,3+6]}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
> [1] 5 7 9
\end{verbatim}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{L2[[}\DecValTok{2}\NormalTok{]](}\DecValTok{1}\NormalTok{)                  }\CommentTok{\# Anwendung des 2. Listenelementinhalts, exp(1)}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
> [1] 2.72
\end{verbatim}
\end{frame}

\begin{frame}[fragile]{Listen}
\protect\hypertarget{listen-8}{}
\setstretch{1}

\textcolor{darkblue}{Copy-on-modify} \footnotesize

Wie bei Vektoren gilt bei Listen das Copy-on-Modify Prinzip.

``Shallow copy'': Listenobjekt wird kopiert, aber nicht die gebundenen
Objekte.

\texttt{lobstr::ref()} erlaubt es, dieses Verhalten zu studieren.

\begin{center}\includegraphics[width=0.55\linewidth]{5_Abbildungen/pds_5_list_copy_on_modify} \end{center}

\scriptsize

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{L1 }\OtherTok{=} \FunctionTok{list}\NormalTok{(}\DecValTok{1}\NormalTok{,}\DecValTok{2}\NormalTok{,}\DecValTok{3}\NormalTok{)            }\CommentTok{\# Erzeugen einer Liste als Objekt (0x1a3)}
\NormalTok{L2 }\OtherTok{=}\NormalTok{ L1                     }\CommentTok{\# L1 und L2 referenzieren das Objekt (0x1a3)}
\NormalTok{L2[[}\DecValTok{3}\NormalTok{]] }\OtherTok{=} \DecValTok{4}                 \CommentTok{\# Copy{-}on{-}Modify mit shallow Objekt Kopie}
\NormalTok{lobstr}\SpecialCharTok{::}\FunctionTok{ref}\NormalTok{(L1,L2)          }\CommentTok{\# Ausgabe der Referenzen}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
> o [1:0x1d632f28] <list> 
> +-[2:0x1d553248] <dbl> 
> +-[3:0x1d553210] <dbl> 
> \-[4:0x1d5531d8] <dbl> 
>  
> o [5:0x1d6e3ba8] <list> 
> +-[2:0x1d553248] 
> +-[3:0x1d553210] 
> \-[6:0x1d5530f8] <dbl>
\end{verbatim}
\end{frame}

\begin{frame}{}
\protect\hypertarget{section-4}{}
\setstretch{3}
\vfill
\large

Listen

\textbf{Dataframes}

Übungen und Selbstkontrollfragen \vfill
\end{frame}

\begin{frame}{Dataframes}
\protect\hypertarget{dataframes}{}
\setstretch{1.4}

\textcolor{darkblue}{Übersicht} \small

\begin{itemize}
\tightlist
\item
  Dataframes sind die zentrale Datenstruktur in R.
\item
  Dataframes stellt man sich am besten als Tabelle vor.
\item
  Die Zeilen und Spalten der Tabelle haben Namen.
\end{itemize}

\vspace{1mm}

\begin{center}\includegraphics[width=0.75\linewidth]{5_Abbildungen/pds_5_tabelle} \end{center}
\end{frame}

\begin{frame}{Dataframes}
\protect\hypertarget{dataframes-1}{}
\setstretch{1.4}

\textcolor{darkblue}{Übersicht} \small

\begin{itemize}
\tightlist
\item
  Formal ist ein Dataframe eine Liste, deren Elemente Vektoren gleicher
  Länge sind.
\item
  Die Listenelemente entsprechen den Spalten einer Tabelle.
\item
  Die Vektorelement gleicher Position entsprechen den Zeilen einer
  Tabelle.
\end{itemize}

\begin{center}\includegraphics[width=0.5\linewidth]{5_Abbildungen/pds_5_dataframe_representation} \end{center}
\end{frame}

\begin{frame}[fragile]{Dataframes}
\protect\hypertarget{dataframes-2}{}
\setstretch{1.2}

\textcolor{darkblue}{Erzeugung} \small

\texttt{data.frame()} erzeugt einen Dataframe \footnotesize

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{D }\OtherTok{=} \FunctionTok{data.frame}\NormalTok{(}\AttributeTok{x =}\NormalTok{ letters[}\DecValTok{1}\SpecialCharTok{:}\DecValTok{4}\NormalTok{],    }\CommentTok{\# 1. Spalte mit Name x}
               \AttributeTok{y =} \DecValTok{1}\SpecialCharTok{:}\DecValTok{4}\NormalTok{,             }\CommentTok{\# 2. Spalte mit Name y}
               \AttributeTok{z =} \FunctionTok{c}\NormalTok{(T,T,F,T))      }\CommentTok{\# 3. Spalte mit Name z}
\FunctionTok{print}\NormalTok{(D)}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
>   x y     z
> 1 a 1  TRUE
> 2 b 2  TRUE
> 3 c 3 FALSE
> 4 d 4  TRUE
\end{verbatim}

\small

Die Spalten des Dataframes müssen gleiche Länge haben

\footnotesize

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{D }\OtherTok{=} \FunctionTok{data.frame}\NormalTok{(}\AttributeTok{x =}\NormalTok{ letters[}\DecValTok{1}\SpecialCharTok{:}\DecValTok{4}\NormalTok{],    }\CommentTok{\# 1. Spalte mit Name x}
               \AttributeTok{y =} \DecValTok{1}\SpecialCharTok{:}\DecValTok{4}\NormalTok{,             }\CommentTok{\# 2. Spalte mit Name y}
               \AttributeTok{z =} \FunctionTok{c}\NormalTok{(T,T,F))        }\CommentTok{\# 3. Spalte mit Name z}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
> Error in data.frame(x = letters[1:4], y = 1:4, z = c(T, T, F)): Argumente implizieren unterschiedliche Anzahl Zeilen: 4, 3
\end{verbatim}

\small

Die Spalten eines Dataframes können offenbar unterschiedlichen Typs
sein.
\end{frame}

\begin{frame}[fragile]{Dataframes}
\protect\hypertarget{dataframes-3}{}
\setstretch{1.1}

\textcolor{darkblue}{Charakterisierung}

\small

Ein Dataframe hat \texttt{names()}, \texttt{rownames()},
\texttt{colnames()}

\footnotesize

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{D }\OtherTok{=} \FunctionTok{data.frame}\NormalTok{(}\AttributeTok{age    =} \FunctionTok{c}\NormalTok{(}\DecValTok{30}\NormalTok{,}\DecValTok{35}\NormalTok{,}\DecValTok{40}\NormalTok{,}\DecValTok{45}\NormalTok{),     }\CommentTok{\# 1. Spalte}
               \AttributeTok{height =} \FunctionTok{c}\NormalTok{(}\DecValTok{178}\NormalTok{,}\DecValTok{189}\NormalTok{,}\DecValTok{165}\NormalTok{,}\DecValTok{171}\NormalTok{), }\CommentTok{\# 2. Spalte}
               \AttributeTok{weight =} \FunctionTok{c}\NormalTok{(}\DecValTok{67}\NormalTok{, }\DecValTok{76}\NormalTok{, }\DecValTok{81}\NormalTok{, }\DecValTok{92}\NormalTok{))  }\CommentTok{\# 3. Spalte}
\FunctionTok{names}\NormalTok{(D)                                    }\CommentTok{\# names gibt die Spaltennamen aus}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
> [1] "age"    "height" "weight"
\end{verbatim}

\begin{Shaded}
\begin{Highlighting}[]
\FunctionTok{colnames}\NormalTok{(D)                                 }\CommentTok{\# colnames entspricht names}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
> [1] "age"    "height" "weight"
\end{verbatim}

\begin{Shaded}
\begin{Highlighting}[]
\FunctionTok{rownames}\NormalTok{(D)                                 }\CommentTok{\# default rownames sind 1,2,...}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
> [1] "1" "2" "3" "4"
\end{verbatim}

\small

Ein Dataframe \texttt{nrow()} Zeilen und \texttt{length()} bzw.
\texttt{ncol()} Spalten

\footnotesize

\begin{Shaded}
\begin{Highlighting}[]
\FunctionTok{nrow}\NormalTok{(D)                                     }\CommentTok{\# Zeilenanzahl}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
> [1] 4
\end{verbatim}

\begin{Shaded}
\begin{Highlighting}[]
\FunctionTok{ncol}\NormalTok{(D)                                     }\CommentTok{\# Spaltenanzahl}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
> [1] 3
\end{verbatim}

\begin{Shaded}
\begin{Highlighting}[]
\FunctionTok{length}\NormalTok{(D)                                   }\CommentTok{\# Länge ist die Spaltenanzahl}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
> [1] 3
\end{verbatim}
\end{frame}

\begin{frame}[fragile]{Dataframes}
\protect\hypertarget{dataframes-4}{}
\textcolor{darkblue}{Charakterisierung} \small

\texttt{View()} öffnet den RStudio Data Viewer.

\begin{Shaded}
\begin{Highlighting}[]
\FunctionTok{View}\NormalTok{(D)}
\end{Highlighting}
\end{Shaded}

\begin{center}\includegraphics[width=0.25\linewidth]{5_Abbildungen/pds_5_view} \end{center}

\texttt{str()} zeigt in kompakter Form wesentliche Aspekte eines
Dataframes an.

\begin{Shaded}
\begin{Highlighting}[]
\FunctionTok{str}\NormalTok{(D)}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
> 'data.frame': 4 obs. of  3 variables:
>  $ age   : num  30 35 40 45
>  $ height: num  178 189 165 171
>  $ weight: num  67 76 81 92
\end{verbatim}

Allgemein zeigt \texttt{str()} in kompakter Form wesentliche Aspekte
eines R Objektes an.
\end{frame}

\begin{frame}[fragile]{Dataframes}
\protect\hypertarget{dataframes-5}{}
\textcolor{darkblue}{Attribute} \small

\begin{itemize}
\tightlist
\item
  Dataframes sind Listen mit Attributen für (column) \texttt{names} und
  \texttt{row.names}
\item
  Dataframes haben \texttt{class} ``data.frame''
\end{itemize}

\footnotesize

\begin{Shaded}
\begin{Highlighting}[]
\FunctionTok{typeof}\NormalTok{(D)}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
> [1] "list"
\end{verbatim}

\begin{Shaded}
\begin{Highlighting}[]
\FunctionTok{attributes}\NormalTok{(D)}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
> $names
> [1] "age"    "height" "weight"
> 
> $class
> [1] "data.frame"
> 
> $row.names
> [1] 1 2 3 4
\end{verbatim}
\end{frame}

\begin{frame}[fragile]{Dataframes}
\protect\hypertarget{dataframes-6}{}
\textcolor{darkblue}{Indizierung} \small

Die Prinzipien der Indizierung für Vektoren und Matrizen gelten auch für
Dataframes

\(\Rightarrow\) Bei einem Index verhalten sich Dataframes wie Listen

\footnotesize

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{D }\OtherTok{=} \FunctionTok{data.frame}\NormalTok{(}\AttributeTok{x =}\NormalTok{ letters[}\DecValTok{1}\SpecialCharTok{:}\DecValTok{4}\NormalTok{],    }\CommentTok{\# 1. Spalte mit Name x}
               \AttributeTok{y =} \DecValTok{1}\SpecialCharTok{:}\DecValTok{4}\NormalTok{,             }\CommentTok{\# 2. Spalte mit Name y}
               \AttributeTok{z =} \FunctionTok{c}\NormalTok{(T,T,F,T))      }\CommentTok{\# 3. Spalte mit Name z}
\FunctionTok{class}\NormalTok{(D)                            }\CommentTok{\# D ist ein Dataframe}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
> [1] "data.frame"
\end{verbatim}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{v }\OtherTok{=}\NormalTok{ D[}\DecValTok{1}\NormalTok{]                            }\CommentTok{\# 1. Listenelement als Dataframe}
\NormalTok{v}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
>   x
> 1 a
> 2 b
> 3 c
> 4 d
\end{verbatim}

\begin{Shaded}
\begin{Highlighting}[]
\FunctionTok{class}\NormalTok{(v)                            }\CommentTok{\# v ist ein Dataframe}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
> [1] "data.frame"
\end{verbatim}
\end{frame}

\begin{frame}[fragile]{Dataframes}
\protect\hypertarget{dataframes-7}{}
\textcolor{darkblue}{Indizierung} \footnotesize

Die Prinzipien der Indizierung für Vektoren und Matrizen gelten auch für
Dataframes

\(\Rightarrow\) Bei einem Index verhalten sich Dataframes wie Listen

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{D }\OtherTok{=} \FunctionTok{data.frame}\NormalTok{(}\AttributeTok{x =}\NormalTok{ letters[}\DecValTok{1}\SpecialCharTok{:}\DecValTok{4}\NormalTok{],    }\CommentTok{\# 1. Spalte mit Name x}
               \AttributeTok{y =} \DecValTok{1}\SpecialCharTok{:}\DecValTok{4}\NormalTok{,             }\CommentTok{\# 2. Spalte mit Name y}
               \AttributeTok{z =} \FunctionTok{c}\NormalTok{(T,T,F,T))      }\CommentTok{\# 3. Spalte mit Name z}
\NormalTok{w }\OtherTok{=}\NormalTok{ D[[}\DecValTok{1}\NormalTok{]]                          }\CommentTok{\# Inhalt des 1. Listenelements                                      }
\NormalTok{w}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
> [1] "a" "b" "c" "d"
\end{verbatim}

\begin{Shaded}
\begin{Highlighting}[]
\FunctionTok{class}\NormalTok{(w)                            }\CommentTok{\# w ist ein character vector}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
> [1] "character"
\end{verbatim}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{y }\OtherTok{=}\NormalTok{ D}\SpecialCharTok{$}\NormalTok{y                             }\CommentTok{\# $ zur Indizierung der y Spalte}
\NormalTok{y}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
> [1] 1 2 3 4
\end{verbatim}

\begin{Shaded}
\begin{Highlighting}[]
\FunctionTok{class}\NormalTok{(y)                            }\CommentTok{\# v ist ein Vektor vom Typ "integer" (!)}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
> [1] "integer"
\end{verbatim}
\end{frame}

\begin{frame}[fragile]{Dataframes}
\protect\hypertarget{dataframes-8}{}
\setstretch{1.2}

\textcolor{darkblue}{Indizierung}

\footnotesize

Die Prinzipien der Indizierung für Vektoren und Matrizen gelten auch für
Dataframes

\(\Rightarrow\) Bei zwei Indices verhalten sich Dataframes wie Matrizen

\vspace{1mm}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{D }\OtherTok{=} \FunctionTok{data.frame}\NormalTok{(}\AttributeTok{x =}\NormalTok{ letters[}\DecValTok{1}\SpecialCharTok{:}\DecValTok{4}\NormalTok{],    }\CommentTok{\# 1. Spalte mit Name x}
               \AttributeTok{y =} \DecValTok{1}\SpecialCharTok{:}\DecValTok{4}\NormalTok{,             }\CommentTok{\# 2. Spalte mit Name y}
               \AttributeTok{z =} \FunctionTok{c}\NormalTok{(T,T,F,T))      }\CommentTok{\# 3. Spalte mit Name z}
\end{Highlighting}
\end{Shaded}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{D[}\DecValTok{2}\SpecialCharTok{:}\DecValTok{3}\NormalTok{,}\SpecialCharTok{{-}}\DecValTok{2}\NormalTok{]                           }\CommentTok{\# 1. Index fuer Zeilen, 2. Index fuer Spalten}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
>   x     z
> 2 b  TRUE
> 3 c FALSE
\end{verbatim}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{D[}\FunctionTok{c}\NormalTok{(T,F,T,F),]                      }\CommentTok{\# 1. Index fuer Zeilen, 2. Index fuer Spalten}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
>   x y     z
> 1 a 1  TRUE
> 3 c 3 FALSE
\end{verbatim}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{D[,}\FunctionTok{c}\NormalTok{(}\StringTok{"x"}\NormalTok{, }\StringTok{"z"}\NormalTok{)]                     }\CommentTok{\# 1. Index fuer Zeilen, 2. Index fuer Spalten}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
>   x     z
> 1 a  TRUE
> 2 b  TRUE
> 3 c FALSE
> 4 d  TRUE
\end{verbatim}
\end{frame}

\begin{frame}{Dataframes}
\protect\hypertarget{dataframes-9}{}
\textcolor{darkblue}{Copy-on-modify} \small

\begin{itemize}
\tightlist
\item
  Die Copy-on-Modify Prinzipien für Listen gelten auch für Dataframes
\item
  Modifikation einer Spalte führt zur Kopie der entsprechenden Spalte
\item
  Modifikation einer Zeile führt zur Kopie des gesamten Dataframes
\end{itemize}

\begin{center}\includegraphics[width=0.9\linewidth]{5_Abbildungen/pds_5_dataframe_copy_on_modify} \end{center}
\end{frame}

\begin{frame}{}
\protect\hypertarget{section-5}{}
\setstretch{3}
\vfill
\large

Listen

Dataframes

\textbf{Übungen und Selbstkontrollfragen} \vfill
\end{frame}

\begin{frame}{Übungen und Selbstkontrollfragen}
\protect\hypertarget{uxfcbungen-und-selbstkontrollfragen}{}
\small
\vfill
\begin{enumerate}
\item Dokumentieren Sie die in dieser Einheit eingeführten R Befehle.
\item Beschreiben Sie in einer Übersicht die R Datenstruktur ``List''.
\item Erzeugen Sie eine Liste mit vier Elementen.
\item L sei eine Liste. Was ist der Unterschied zwischen L[1] und L[[1]]?
\item Erzeugen Sie zwei Listen und fügen Sie diese zusammen.
\item L sei eine Liste. Was gibt length(L) an?
\item L sei eine Liste. Was bedeutet dann L\$Student?
\item Erläutern Sie den Begriff ``Shallow Copy'' einer Liste.
\item Beschreiben Sie in einer Übersicht die R Datenstruktur "Dataframe".
\item Erzeugen Sie einen Dataframe mit vier Spalten.
\item D sei ein Dataframe. Was geben rownames(D) und colnames(D) an?
\item D sei ein Dataframe. Was ist der Unterschied zwischen D[1] und D[1,1]?
\item D sei ein Dataframe. Was bedeutet dann D\$Student?
\item Erläutern Sie das Copy-on-modify Prinzip für Dataframes.
\end{enumerate}
\vfill
\end{frame}

\end{document}
