% 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]{3_Abbildungen/pds_3_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}
(3) Vektoren
\end{center}
\vfill
\end{frame}

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

Erzeugung

Charakterisierung

Indizierung

Arithmetik

Attribute

Übungen und Selbstkontrollfragen \vfill
\end{frame}

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

\textbf{Erzeugung}

Charakterisierung

Indizierung

Arithmetik

Attribute

Übungen und Selbstkontrollfragen \vfill
\end{frame}

\begin{frame}{Erzeugung}
\protect\hypertarget{erzeugung}{}
\setstretch{2.5}

\begin{itemize}
\tightlist
\item
  Vektoren sind geordnete Folgen von Datenwerten.
\item
  Die einzelnen Datenwerte eines Vektors heißen Elemente des Vektors.
\item
  Vektoren, deren Elemente alle vom gleichen Datentyp sind, heißen
  \textbf{atomar}.
\item
  Die zentralen Datentypen sind \textbf{numeric}, (\textbf{double},
  \textbf{integer}), \textbf{logical}, \textbf{character}
\end{itemize}

\vspace{1mm}

\begin{center}\includegraphics[width=0.9\linewidth]{3_Abbildungen/pds_3_atomic_vectors} \end{center}

\begin{itemize}
\tightlist
\item
  Mit dem Begriff \textbf{Vektor} ist hier immer ein \textbf{atomarer
  Vektor} gemeint.
\end{itemize}
\end{frame}

\begin{frame}[fragile]{Erzeugung}
\protect\hypertarget{erzeugung-1}{}
Elementarwerte

\small

\textbf{Numeric}

\footnotesize

Double wird in Dezimalnotation oder wissenschaftlicher Notation
spezifiziert

Weitere mögliche Werte sind Inf, -Inf, und NaN (Not-a-Number)

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{x }\OtherTok{=} \DecValTok{1}                           \CommentTok{\# Einelementiger Vektor vom Typ double}
\NormalTok{y }\OtherTok{=} \FloatTok{2.1e2}                       \CommentTok{\# Einelementiger Vektor vom Typ double}
\NormalTok{z }\OtherTok{=} \ConstantTok{Inf}                         \CommentTok{\# Einelementiger Vektor vom Typ double}
\end{Highlighting}
\end{Shaded}

Integer wird wie double ohne Dezimalstellen spezifiziert, gefolgt von L
(long integer)

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{x }\OtherTok{=}\NormalTok{ 1L                          }\CommentTok{\# Einelementiger Vektor vom Typ integer}
\NormalTok{y }\OtherTok{=}\NormalTok{ 200L                        }\CommentTok{\# Einelementiger Vektor vom Typ integer}
\end{Highlighting}
\end{Shaded}

\small

\textbf{Logical}

\footnotesize

TRUE oder FALSE, abgekürzt T oder F

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{x }\OtherTok{=} \ConstantTok{TRUE}                        \CommentTok{\# Einelementiger Vektor vom Typ logical}
\NormalTok{y }\OtherTok{=}\NormalTok{ F                           }\CommentTok{\# Einelementiger Vektor vom Typ logical}
\end{Highlighting}
\end{Shaded}

\small

\textbf{Character}

\footnotesize

Anführungszeichen (``a'') oder Hochkommata (`a')

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{x }\OtherTok{=} \StringTok{"a"}                         \CommentTok{\# Einelementiger Vektor vom Typ character}
\NormalTok{y }\OtherTok{=} \StringTok{\textquotesingle{}test\textquotesingle{}}                      \CommentTok{\# Einelementiger Vektor vom Typ character}
\end{Highlighting}
\end{Shaded}
\end{frame}

\begin{frame}[fragile]{Erzeugung}
\protect\hypertarget{erzeugung-2}{}
\small

Direkte Konkatenation von Elementarwerten mit \texttt{c()}

\footnotesize

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{x }\OtherTok{=} \FunctionTok{c}\NormalTok{(}\DecValTok{1}\NormalTok{,}\DecValTok{2}\NormalTok{,}\DecValTok{3}\NormalTok{)                        }\CommentTok{\# numeric vector [1,2,3]}
\NormalTok{y }\OtherTok{=} \FunctionTok{c}\NormalTok{(}\DecValTok{0}\NormalTok{,x,}\DecValTok{4}\NormalTok{)                        }\CommentTok{\# numeric vector [0,1,2,3,4]}
\NormalTok{s }\OtherTok{=} \FunctionTok{c}\NormalTok{(}\StringTok{"a"}\NormalTok{, }\StringTok{"b"}\NormalTok{, }\StringTok{"c"}\NormalTok{)                }\CommentTok{\# character vector ["a", "b", "c"]}
\NormalTok{l }\OtherTok{=} \FunctionTok{c}\NormalTok{(}\ConstantTok{TRUE}\NormalTok{, }\ConstantTok{FALSE}\NormalTok{)                  }\CommentTok{\# logical  vector [TRUE, FALSE]}
\end{Highlighting}
\end{Shaded}

\small

\texttt{c()} konkateniert die Eingabeargumente und erzwingt einen
einheitlichen Datentyp

\footnotesize

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{x }\OtherTok{=} \FunctionTok{c}\NormalTok{(}\DecValTok{1}\NormalTok{, }\StringTok{"a"}\NormalTok{, }\ConstantTok{TRUE}\NormalTok{)                 }\CommentTok{\# character vector ["1", "a", "TRUE"]}
\end{Highlighting}
\end{Shaded}

\small

Erzeugen ``leerer'' Vektoren mit \texttt{vector()}

\footnotesize

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{v }\OtherTok{=} \FunctionTok{vector}\NormalTok{(}\StringTok{"double"}\NormalTok{,}\DecValTok{3}\NormalTok{)              }\CommentTok{\# double vector [0,0,0]}
\NormalTok{w }\OtherTok{=} \FunctionTok{vector}\NormalTok{(}\StringTok{"integer"}\NormalTok{,}\DecValTok{3}\NormalTok{)             }\CommentTok{\# integer vector [0,0,0]}
\NormalTok{l }\OtherTok{=} \FunctionTok{vector}\NormalTok{(}\StringTok{"logical"}\NormalTok{,}\DecValTok{2}\NormalTok{)             }\CommentTok{\# logical vector [FALSE, FALSE]}
\NormalTok{s }\OtherTok{=} \FunctionTok{vector}\NormalTok{(}\StringTok{"character"}\NormalTok{,}\DecValTok{4}\NormalTok{)           }\CommentTok{\# character vector ["", "", "", ""]}
\end{Highlighting}
\end{Shaded}

\small

Erzeugen ``leerer'' Vektoren mit double(), integer(), logical(),
character()

\footnotesize

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{v }\OtherTok{=} \FunctionTok{double}\NormalTok{(}\DecValTok{3}\NormalTok{)                       }\CommentTok{\# double vector [0,0,0]}
\NormalTok{w }\OtherTok{=} \FunctionTok{integer}\NormalTok{(}\DecValTok{3}\NormalTok{)                      }\CommentTok{\# integer vector [0,0,0]}
\NormalTok{l }\OtherTok{=} \FunctionTok{logical}\NormalTok{(}\DecValTok{2}\NormalTok{)                      }\CommentTok{\# logical vector [FALSE, FALSE]}
\NormalTok{s }\OtherTok{=} \FunctionTok{character}\NormalTok{(}\DecValTok{4}\NormalTok{)                    }\CommentTok{\# character vector ["", "", "", ""]}
\end{Highlighting}
\end{Shaded}
\end{frame}

\begin{frame}[fragile]{Erzeugung}
\protect\hypertarget{erzeugung-3}{}
\small

Erzeugen von ganzzahligen Sequenzen mithilfe des \textbf{Colonoperators}
\texttt{:}

\texttt{a:b} erzeugt ganzzahlige Sequenzen von a (inklusive) bis b
(maximal)

\footnotesize

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{x }\OtherTok{=} \DecValTok{0}\SpecialCharTok{:}\DecValTok{5}                         \CommentTok{\# [0,1,2,3,4,5]}
\NormalTok{y }\OtherTok{=} \FloatTok{1.5}\SpecialCharTok{:}\FloatTok{6.1}                     \CommentTok{\# [1.5, 2.5, 3.5, 4.5, 5.5]}
\end{Highlighting}
\end{Shaded}

\small

Erzeugen von Sequenzen mit \texttt{seq()}

\texttt{seq(from,\ to,\ by\ =\ ((to\ -\ from)/(len\ -\ 1),\ len\ =\ NULL,\ ...)}

\footnotesize

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{x\_1 }\OtherTok{=} \FunctionTok{seq}\NormalTok{(}\DecValTok{0}\NormalTok{,}\DecValTok{5}\NormalTok{)                  }\CommentTok{\# wie 0:5, [0,1,2,3,4,5]}
\NormalTok{x\_2 }\OtherTok{=} \FunctionTok{seq}\NormalTok{(}\DecValTok{0}\NormalTok{,}\DecValTok{1}\NormalTok{,}\AttributeTok{len =} \DecValTok{5}\NormalTok{)          }\CommentTok{\# 5 Zahlen zwischen 0 (inkl.) und 1 (inkl.)}
                                \CommentTok{\# [0.00, 0.25, 0.50, 0.75, 1.00]}
\NormalTok{x\_3 }\OtherTok{=} \FunctionTok{seq}\NormalTok{(}\DecValTok{0}\NormalTok{,}\DecValTok{2}\NormalTok{,}\AttributeTok{by =}\NormalTok{ .}\DecValTok{15}\NormalTok{)         }\CommentTok{\# 0.15 Schritte zwischen 0 (inkl.) und 2 (max.)}
                                \CommentTok{\# [0.00, 0.15, 0.30, ..., 1.50 1.65 1.80 1.95]}
\NormalTok{x\_4 }\OtherTok{=} \FunctionTok{seq}\NormalTok{(}\DecValTok{1}\NormalTok{,}\DecValTok{0}\NormalTok{,}\AttributeTok{by =} \SpecialCharTok{{-}}\NormalTok{.}\DecValTok{1}\NormalTok{)         }\CommentTok{\# {-}0.1 Schritte zwischen 1 (inkl.) und 0 (min.)}
\end{Highlighting}
\end{Shaded}

\small

\texttt{seq.int()}, \texttt{seq\_len()}, \texttt{seq\_along()} als
weitere Varianten

\footnotesize

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{x\_1 }\OtherTok{=} \FunctionTok{seq.int}\NormalTok{(}\DecValTok{0}\NormalTok{,}\DecValTok{5}\NormalTok{)              }\CommentTok{\# wie 0:5, [0,1,2,3,4,5]}
\NormalTok{x\_2 }\OtherTok{=} \FunctionTok{seq\_len}\NormalTok{(}\DecValTok{5}\NormalTok{)                }\CommentTok{\# Natuerliche Zahlen bis 5, [1,2,3,4,5]}
\NormalTok{x\_3 }\OtherTok{=} \FunctionTok{seq\_along}\NormalTok{(}\FunctionTok{c}\NormalTok{(}\StringTok{"a"}\NormalTok{,}\StringTok{"b"}\NormalTok{))     }\CommentTok{\# wie seq\_len(length(c("a", "b")))}
\end{Highlighting}
\end{Shaded}
\end{frame}

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

Erzeugung

\textbf{Charakterisierung}

Indizierung

Arithmetik

Attribute

Übungen und Selbstkontrollfragen \vfill
\end{frame}

\begin{frame}[fragile]{Charakterisierung}
\protect\hypertarget{charakterisierung}{}
\setstretch{1}
\footnotesize

\texttt{length()} gibt die Anzahl der Elemente eines Vektors aus

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{x }\OtherTok{=} \DecValTok{0}\SpecialCharTok{:}\DecValTok{10}                    \CommentTok{\# Vektor}
\FunctionTok{length}\NormalTok{(x)                   }\CommentTok{\# Anzahl der Elemente des Vektors}
\end{Highlighting}
\end{Shaded}

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

\texttt{typeof()} gibt den elementaren Datentyp eines Vektors aus

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{x }\OtherTok{=} \DecValTok{1}\SpecialCharTok{:}\NormalTok{3L                    }\CommentTok{\# Vektor}
\FunctionTok{typeof}\NormalTok{(x)                   }\CommentTok{\# Datentyp des atomic vectors}
\end{Highlighting}
\end{Shaded}

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

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{y }\OtherTok{=} \FunctionTok{c}\NormalTok{(T,F,T)                }\CommentTok{\# Vektor}
\FunctionTok{typeof}\NormalTok{(y)                   }\CommentTok{\# Der Datentyp des atomic vectors}
\end{Highlighting}
\end{Shaded}

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

\texttt{mode()} und \texttt{storage.mode()} werden nicht empfohlen, sie
existieren für S Kompatibilität

\texttt{is.logical()}, \texttt{is.double()}, \texttt{is.integer()},
\texttt{is.character()} testen den Datentyp

\begin{Shaded}
\begin{Highlighting}[]
\FunctionTok{is.double}\NormalTok{(x)                }\CommentTok{\# Testen obigen Vektors}
\end{Highlighting}
\end{Shaded}

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

\begin{Shaded}
\begin{Highlighting}[]
\FunctionTok{is.logical}\NormalTok{(y)               }\CommentTok{\# Testen obigen Vektors}
\end{Highlighting}
\end{Shaded}

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

\begin{frame}[fragile]{Charakterisierung}
\protect\hypertarget{charakterisierung-1}{}
Datentypangleichung (Coercion) \vspace{2mm}

\small

Bei Konkatenation verschiedener Datentypen wird ein einheitlicher
Datentyp erzwungen. Es gilt

\center

character \(>\) double \(>\) integer \(>\) logical \vspace{2mm}

\justifying
\footnotesize

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{x }\OtherTok{=} \FunctionTok{c}\NormalTok{(}\FloatTok{1.2}\NormalTok{,}\StringTok{"a"}\NormalTok{)          }\CommentTok{\# Kombination gemischter Datentypen (character schlaegt double)}
\NormalTok{x}
\end{Highlighting}
\end{Shaded}

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

\begin{Shaded}
\begin{Highlighting}[]
\FunctionTok{typeof}\NormalTok{(x)               }\CommentTok{\# Erzeugter Vektor ist vom Datentyp character}
\end{Highlighting}
\end{Shaded}

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

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{y }\OtherTok{=} \FunctionTok{c}\NormalTok{(1L, }\ConstantTok{TRUE}\NormalTok{)         }\CommentTok{\# Kombination  gemischter Datentypen (integer schlaegt logical)}
\NormalTok{y}
\end{Highlighting}
\end{Shaded}

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

\begin{Shaded}
\begin{Highlighting}[]
\FunctionTok{typeof}\NormalTok{(y)               }\CommentTok{\# Erzeugter Vektor ist vom Typ integer}
\end{Highlighting}
\end{Shaded}

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

\begin{frame}[fragile]{Charakterisierung}
\protect\hypertarget{charakterisierung-2}{}
Datentypangleichung (Coercion) \vspace{2mm}

\small

Bei Konkatenation verschiedener Datentypen wird ein einheitlicher
Datentyp erzwungen. Es gilt

\center

character \(>\) double \(>\) integer \(>\) logical \vspace{2mm}

\justifying
\small

\texttt{as.logical()}, \texttt{as.integer()}, \texttt{as.double()},
\texttt{as.character()} erlauben explizite Coercion: \vspace{1mm}

\footnotesize

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{x }\OtherTok{=} \FunctionTok{c}\NormalTok{(}\DecValTok{0}\NormalTok{,}\DecValTok{1}\NormalTok{,}\DecValTok{1}\NormalTok{,}\DecValTok{0}\NormalTok{)          }\CommentTok{\# double Vektor}
\NormalTok{y }\OtherTok{=} \FunctionTok{as.logical}\NormalTok{(x)       }\CommentTok{\# ... umgewandelt in logical}
\NormalTok{y}
\end{Highlighting}
\end{Shaded}

\small

Coercion geschieht aber auch oft implizit: \vspace{1mm}

\footnotesize

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{x }\OtherTok{=} \FunctionTok{c}\NormalTok{(T, F, T, T)       }\CommentTok{\# logical Vektor}
\NormalTok{s }\OtherTok{=} \FunctionTok{sum}\NormalTok{(x)              }\CommentTok{\# Summation in integer gewandelter logical Elemente}
\NormalTok{s           }
\end{Highlighting}
\end{Shaded}

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

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

Erzeugung

Charakterisierung

\textbf{Indizierung}

Arithmetik

Attribute

Übungen und Selbstkontrollfragen \vfill
\end{frame}

\begin{frame}[fragile]{Indizierung}
\protect\hypertarget{indizierung}{}
\setstretch{1.4}
\small

Einzelne oder mehrere Vektorkomponenten werden durch Indizierung
adressiert.

Indizierung wird auch Indexing, Subsetting, oder Slicing genannt.

Zur Indizierung werden eckige Klammern {[}\(\,\,\){]} benutzt.

Indizierung kann zur Kopie oder Manipulation von Komponenten benutzt
werden.

Der Index des ersten Elements ist 1 (nicht 0, wie in anderen Sprachen).

\footnotesize

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{x       }\OtherTok{=} \FunctionTok{c}\NormalTok{(}\StringTok{"a"}\NormalTok{, }\StringTok{"b"}\NormalTok{, }\StringTok{"c"}\NormalTok{)      }\CommentTok{\# character vector ["a", "b", "c"]}
\NormalTok{y       }\OtherTok{=}\NormalTok{ x[}\DecValTok{2}\NormalTok{]                  }\CommentTok{\# Kopie von "b" in y}
\NormalTok{x[}\DecValTok{3}\NormalTok{]    }\OtherTok{=} \StringTok{"d"}                   \CommentTok{\# Aenderung von x zu x = ["a", "b", "d"]}
\end{Highlighting}
\end{Shaded}

\normalsize

Prinzipien der Indizierung in R

\small

Indizierung mit \ldots{}

\ldots{} einem Vektor positiver Zahlen adressiert entsprechende
Komponenten.

\ldots{} mit einem Vektor negativer Zahlen adressiert komplementäre
Komponenten.

\ldots{} einem logischen Vektor adressiert die Komponenten mit TRUE.

\ldots{} einem character Vektor adressiert benannte Komponenten.
\end{frame}

\begin{frame}[fragile]{Indizierung}
\protect\hypertarget{indizierung-1}{}
\small

Beispiele

\footnotesize

Indizierung mit einem Vektor positiver Zahlen

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{x }\OtherTok{=} \FunctionTok{c}\NormalTok{(}\DecValTok{1}\NormalTok{,}\DecValTok{4}\NormalTok{,}\DecValTok{9}\NormalTok{,}\DecValTok{16}\NormalTok{,}\DecValTok{25}\NormalTok{)      }\CommentTok{\# [1,4,9,16,25] = [1\^{}2, 2\^{}2, 3\^{}2, 4\^{}2, 5\^{}2]}
\NormalTok{y }\OtherTok{=}\NormalTok{ x[}\DecValTok{1}\SpecialCharTok{:}\DecValTok{3}\NormalTok{]              }\CommentTok{\# 1:3 erzeugt Vektor [1,2,3], x[1:3] = [1,4,9]}
\NormalTok{z }\OtherTok{=}\NormalTok{ x[}\FunctionTok{c}\NormalTok{(}\DecValTok{1}\NormalTok{,}\DecValTok{3}\NormalTok{,}\DecValTok{5}\NormalTok{)]         }\CommentTok{\# c(1,3,5) erzeugt Vektor [1,3,5], x[c(1,3,5)] = [1,9,25]}
\end{Highlighting}
\end{Shaded}

Indizierung mit einem Vektor negativer Zahlen

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{x }\OtherTok{=} \FunctionTok{c}\NormalTok{(}\DecValTok{1}\NormalTok{,}\DecValTok{4}\NormalTok{,}\DecValTok{9}\NormalTok{,}\DecValTok{16}\NormalTok{,}\DecValTok{25}\NormalTok{)      }\CommentTok{\# [1,4,9,16,25] = [1\^{}2, 2\^{}2, 3\^{}2, 4\^{}2, 5\^{}2]}
\NormalTok{y }\OtherTok{=}\NormalTok{ x[}\FunctionTok{c}\NormalTok{(}\SpecialCharTok{{-}}\DecValTok{2}\NormalTok{,}\SpecialCharTok{{-}}\DecValTok{4}\NormalTok{)]         }\CommentTok{\# Alle Komponenten ausseer 2 und 4, x[c({-}2,{-}4)] = [1,9,25]}
\NormalTok{z }\OtherTok{=}\NormalTok{ x[}\FunctionTok{c}\NormalTok{(}\SpecialCharTok{{-}}\DecValTok{1}\NormalTok{,}\DecValTok{2}\NormalTok{)]          }\CommentTok{\# Gemischte Indizierung nicht erlaubt (Fehlermeldung)}
\end{Highlighting}
\end{Shaded}

Indizierung mit einem logischen Vektor

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{x }\OtherTok{=} \FunctionTok{c}\NormalTok{(}\DecValTok{1}\NormalTok{,}\DecValTok{4}\NormalTok{,}\DecValTok{9}\NormalTok{,}\DecValTok{16}\NormalTok{,}\DecValTok{25}\NormalTok{)      }\CommentTok{\# [1,4,9,16,25] = [1\^{}2, 2\^{}2, 3\^{}2, 4\^{}2, 5\^{}2]}
\NormalTok{y }\OtherTok{=}\NormalTok{ x[}\FunctionTok{c}\NormalTok{(T,T,F,F,T)]     }\CommentTok{\# TRUE Komponenten,  x[c(T,T,F,F,T)] = [1,4,25]}
\NormalTok{z }\OtherTok{=}\NormalTok{ x[x }\SpecialCharTok{\textgreater{}} \DecValTok{5}\NormalTok{]            }\CommentTok{\# x \textgreater{} 5 = [F,F,T,T,T], x[x \textgreater{} 5] = [9,16,25]}
\end{Highlighting}
\end{Shaded}

Indizierung mit einem character Vektor

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{x }\OtherTok{=} \FunctionTok{c}\NormalTok{(}\DecValTok{1}\NormalTok{,}\DecValTok{4}\NormalTok{,}\DecValTok{9}\NormalTok{,}\DecValTok{16}\NormalTok{,}\DecValTok{25}\NormalTok{)      }\CommentTok{\# [1,4,9,16,25] = [1\^{}2, 2\^{}2, 3\^{}2, 4\^{}2, 5\^{}2]}
\FunctionTok{names}\NormalTok{(x) }\OtherTok{=} \FunctionTok{c}\NormalTok{(}\StringTok{"a"}\NormalTok{,}\StringTok{"b"}\NormalTok{)   }\CommentTok{\# Benennung der Komponenten als [a  b \textless{}NA\textgreater{} \textless{}NA\textgreater{} \textless{}NA\textgreater{}]}
\NormalTok{y }\OtherTok{=}\NormalTok{ x[}\StringTok{"a"}\NormalTok{]              }\CommentTok{\# x["a"] = 1}
\end{Highlighting}
\end{Shaded}
\end{frame}

\begin{frame}[fragile]{Indizierung}
\protect\hypertarget{indizierung-2}{}
\small

R hat eine (zu) hohe Flexibilität bei Indizierung

\vspace{1mm}

Out-of-range Indizes verursachen keine Fehler, sondern geben NA aus

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{x }\OtherTok{=} \FunctionTok{c}\NormalTok{(}\DecValTok{1}\NormalTok{,}\DecValTok{4}\NormalTok{,}\DecValTok{9}\NormalTok{,}\DecValTok{16}\NormalTok{,}\DecValTok{25}\NormalTok{)      }\CommentTok{\# [1,4,9,16,25] = [1\^{}2, 2\^{}2, 3\^{}2, 4\^{}2, 5\^{}2]}
\NormalTok{y }\OtherTok{=}\NormalTok{ x[}\DecValTok{10}\NormalTok{]               }\CommentTok{\# x[10] = NA (Not Applicable)}
\end{Highlighting}
\end{Shaded}

\vspace{1mm}

Nichtganzzahlige Indizes verursachen keine Fehler, sondern werden
abgerundet

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{y }\OtherTok{=}\NormalTok{ x[}\FloatTok{4.9}\NormalTok{]              }\CommentTok{\# x[4.9]    = x[4]  = 16}
\NormalTok{z }\OtherTok{=}\NormalTok{ x[}\SpecialCharTok{{-}}\FloatTok{4.9}\NormalTok{]             }\CommentTok{\# x[{-}4.9] = x[{-}4] = [1,4,9,25]}
\end{Highlighting}
\end{Shaded}

\vspace{1mm}

Leere Indizes indizieren den gesamten Vektor

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{y }\OtherTok{=}\NormalTok{ x[]                 }\CommentTok{\# y = x}
\end{Highlighting}
\end{Shaded}
\end{frame}

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

Erzeugung

Charakterisierung

Indizierung

\textbf{Arithmetik}

Attribute

Übungen und Selbstkontrollfragen \vfill
\end{frame}

\begin{frame}[fragile]{Arithmetik}
\protect\hypertarget{arithmetik}{}
\small

Unitäre arithmetische Operatoren und Funktionen werden elementweise
ausgewertet

\footnotesize

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{a   }\OtherTok{=} \FunctionTok{seq}\NormalTok{(}\DecValTok{0}\NormalTok{,}\DecValTok{1}\NormalTok{,}\AttributeTok{len=}\DecValTok{11}\NormalTok{)   }\CommentTok{\# a = [ 0.0   ,  0.1   , ...,  0.9    , 1.0    ]}
\NormalTok{b   }\OtherTok{=} \SpecialCharTok{{-}}\NormalTok{a                }\CommentTok{\# b = [{-}0.0   , {-}0.1   , ..., {-}0.9    ,{-}1.0    ]}
\NormalTok{v   }\OtherTok{=}\NormalTok{ a}\SpecialCharTok{\^{}}\DecValTok{2}               \CommentTok{\# v = [ 0.0\^{}2 ,  0.1\^{}2 , ...,  0.9\^{}2  , 1.0\^{}2  ]}
\NormalTok{w   }\OtherTok{=} \FunctionTok{log}\NormalTok{(a)            }\CommentTok{\# w = [ln(0.0), ln(0.1), ...,  ln(0.9), ln(1.0)]}
\end{Highlighting}
\end{Shaded}

\small

Binäre arithmetische Operatoren werden elementweise ausgewertet

\footnotesize

Vektoren gleicher Länge

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{a }\OtherTok{=} \FunctionTok{c}\NormalTok{(}\DecValTok{1}\NormalTok{,}\DecValTok{2}\NormalTok{,}\DecValTok{3}\NormalTok{)            }\CommentTok{\# a = [1,2,3]}
\NormalTok{b }\OtherTok{=} \FunctionTok{c}\NormalTok{(}\DecValTok{2}\NormalTok{,}\DecValTok{1}\NormalTok{,}\DecValTok{4}\NormalTok{)            }\CommentTok{\# b = [2,1,4]}
\NormalTok{v }\OtherTok{=}\NormalTok{ a }\SpecialCharTok{+}\NormalTok{ b               }\CommentTok{\# v = [1,2,3] + [2,1,4] = [1+2,2+1,3+4] = [   3,  3,    7]}
\NormalTok{w }\OtherTok{=}\NormalTok{ a }\SpecialCharTok{{-}}\NormalTok{ b               }\CommentTok{\# w = [1,2,3] {-} [2,1,4] = [1{-}2,2{-}1,3{-}4] = [  {-}1,  1,   {-}1]}
\NormalTok{x }\OtherTok{=}\NormalTok{ a }\SpecialCharTok{*}\NormalTok{ b               }\CommentTok{\# x = [1,2,3] * [2,1,4] = [1*2,2*1,3*4] = [   2,  2,   12]}
\NormalTok{y }\OtherTok{=}\NormalTok{ a }\SpecialCharTok{/}\NormalTok{ b               }\CommentTok{\# y = [1,2,3] / [2,1,4] = [1/2,2/1,3/4] = [0.50,  2, 0.75]}
\end{Highlighting}
\end{Shaded}

\footnotesize

Vektoren und Skalare (= Vektoren der Länge 1)

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{a }\OtherTok{=} \FunctionTok{c}\NormalTok{(}\DecValTok{1}\NormalTok{,}\DecValTok{2}\NormalTok{,}\DecValTok{3}\NormalTok{)            }\CommentTok{\# a = [1,2,3]}
\NormalTok{b }\OtherTok{=} \DecValTok{2}                   \CommentTok{\# b = [2]}
\NormalTok{v }\OtherTok{=}\NormalTok{ a }\SpecialCharTok{+}\NormalTok{ b               }\CommentTok{\# v = [1,2,3] + [2,2,2] = [1+2,2+2,3+2] = [  3,  4,   5]}
\NormalTok{w }\OtherTok{=}\NormalTok{ a }\SpecialCharTok{{-}}\NormalTok{ b               }\CommentTok{\# w = [1,2,3] {-} [2,2,2] = [1{-}2,2{-}2,3{-}2] = [ {-}1,  2,   1]}
\NormalTok{x }\OtherTok{=}\NormalTok{ a }\SpecialCharTok{*}\NormalTok{ b               }\CommentTok{\# x = [1,2,3] * [2,2,2] = [1*2,2*2,3*2] = [  2,  4,   6]}
\NormalTok{y }\OtherTok{=}\NormalTok{ a }\SpecialCharTok{/}\NormalTok{ b               }\CommentTok{\# y = [1,2,3] / [2,2,2] = [1/2,2/2,3/2] = [0.5,  1, 1.5]}
\end{Highlighting}
\end{Shaded}
\end{frame}

\begin{frame}[fragile]{Arithmetik}
\protect\hypertarget{arithmetik-1}{}
Recycling \small

R erlaubt (leider) auch Arithmetik mit Vektoren unterschiedlicher Länge

\footnotesize

Bei ganzzahligen Vielfachen der Länge wird der kürzere Vektor wiederholt

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{x }\OtherTok{=} \DecValTok{1}\SpecialCharTok{:}\DecValTok{2}                 \CommentTok{\# x = [1,2], length(x) = 2}
\NormalTok{y }\OtherTok{=} \DecValTok{3}\SpecialCharTok{:}\DecValTok{6}                 \CommentTok{\# y = [3,4,5,6], length(y) = 4}
\NormalTok{v }\OtherTok{=}\NormalTok{ x }\SpecialCharTok{+}\NormalTok{ y               }\CommentTok{\# v = [1,2,1,2] + [3,4,5,6] = [4,6,6,8]}
\end{Highlighting}
\end{Shaded}

Arithmetik von Vektoren und Skalaren ist ein Spezialfall dieses Prinzips

Andernfalls werden die ersten Komponenten des kürzeren Vektors
wiederholt

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{x }\OtherTok{=} \FunctionTok{c}\NormalTok{(}\DecValTok{1}\NormalTok{,}\DecValTok{3}\NormalTok{,}\DecValTok{5}\NormalTok{)            }\CommentTok{\# x = [1,3,5], length(x) = 3}
\NormalTok{y }\OtherTok{=} \FunctionTok{c}\NormalTok{(}\DecValTok{2}\NormalTok{,}\DecValTok{4}\NormalTok{,}\DecValTok{6}\NormalTok{,}\DecValTok{8}\NormalTok{,}\DecValTok{10}\NormalTok{)       }\CommentTok{\# y = [2,4,6,8,10], length(y) = 5}
\NormalTok{v }\OtherTok{=}\NormalTok{ x }\SpecialCharTok{+}\NormalTok{ y               }\CommentTok{\# v = [1,3,5,1,3] + [2,4,6,8,10] = [3,7,11,9,13]}
\end{Highlighting}
\end{Shaded}

\center

\textbf{Generell sollten nur Vektoren gleicher Länge arithmetisch
verknüpft werden!}
\end{frame}

\begin{frame}[fragile]{Arithmetik}
\protect\hypertarget{arithmetik-2}{}
\small

Fehlende Werte (NA)

\footnotesize

Fehlende Werte werden in R mit NA (not applicable) repräsentiert

Das Rechnen mit NAs ergibt (meist) wieder NA

\begin{Shaded}
\begin{Highlighting}[]
\DecValTok{3} \SpecialCharTok{*} \ConstantTok{NA}                  \CommentTok{\# Multiplikation eines NA Wertes ergibt NA}
\end{Highlighting}
\end{Shaded}

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

\begin{Shaded}
\begin{Highlighting}[]
\ConstantTok{NA} \SpecialCharTok{\textless{}} \DecValTok{2}                  \CommentTok{\# Relationaler Vergleich eines NA Wertes ergibt NA}
\end{Highlighting}
\end{Shaded}

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

\begin{Shaded}
\begin{Highlighting}[]
\ConstantTok{NA}\SpecialCharTok{\^{}}\DecValTok{0}                    \CommentTok{\# NA hoch 0 ergibt 1, weil jeder Wert hoch 0 eins ergibt (?)}
\end{Highlighting}
\end{Shaded}

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

\begin{Shaded}
\begin{Highlighting}[]
\ConstantTok{NA} \SpecialCharTok{\&} \ConstantTok{FALSE}              \CommentTok{\# NA UND FALSE  ergibt FALSE, weil jeder Wert UND FALSE FALSE ergibt}
\end{Highlighting}
\end{Shaded}

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

Auf NA testet man mit \texttt{is.na()}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{x }\OtherTok{=} \FunctionTok{c}\NormalTok{(}\ConstantTok{NA}\NormalTok{, }\DecValTok{5}\NormalTok{, }\ConstantTok{NA}\NormalTok{, }\DecValTok{10}\NormalTok{)    }\CommentTok{\# Vektor mit NAs}
\NormalTok{x }\SpecialCharTok{==} \ConstantTok{NA}                 \CommentTok{\# Kein Testen auf NAs : 5 == NA ist NA, nicht FALSE}
\end{Highlighting}
\end{Shaded}

\begin{Shaded}
\begin{Highlighting}[]
\FunctionTok{is.na}\NormalTok{(x)                }\CommentTok{\# Logisches Testen auf NA}
\end{Highlighting}
\end{Shaded}

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

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

Erzeugung

Charakterisierung

Indizierung

Arithmetik

\textbf{Attribute}

Übungen und Selbstkontrollfragen

\vfill
\end{frame}

\begin{frame}[fragile]{Attribute}
\protect\hypertarget{attribute}{}
Attribute sind Metadaten von R Objekten in Form von
Schlüssel-Wert-Paaren

\small

`attributes() ruft alle Attribute eines Objektes auf

Perse haben atomic vectors keine Attribute

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{a }\OtherTok{=} \DecValTok{1}\SpecialCharTok{:}\DecValTok{3}             \CommentTok{\# ein numerischer Vektor}
\FunctionTok{attributes}\NormalTok{(a)       }\CommentTok{\# Aufrufen aller Attribute}
\end{Highlighting}
\end{Shaded}

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

\texttt{attr()} kann zum Aufrufen und Definieren von Attributen genutzt
werden

\begin{Shaded}
\begin{Highlighting}[]
\FunctionTok{attr}\NormalTok{(a, }\StringTok{"S"}\NormalTok{) }\OtherTok{=} \StringTok{"W"}  \CommentTok{\# a bekommt Attribut mit Schluessel S und Wert W}
\FunctionTok{attr}\NormalTok{(a, }\StringTok{"S"}\NormalTok{)        }\CommentTok{\# Das Attribut mit Schluessel S hat den Wert W}
\end{Highlighting}
\end{Shaded}

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

Attribute werden bei Operationen oft entfernt (Ausnahmen sind
\texttt{names} und \texttt{dim})

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{b }\OtherTok{=}\NormalTok{ a[}\DecValTok{1}\NormalTok{]            }\CommentTok{\# Kopie des ersten Elements von a in Vektor b}
\FunctionTok{attributes}\NormalTok{(b)       }\CommentTok{\# Aufrufen aller Attribute von b}
\end{Highlighting}
\end{Shaded}
\end{frame}

\begin{frame}[fragile]{Attribute}
\protect\hypertarget{attribute-1}{}
\setstretch{1}
\footnotesize

Spezifikation des Attributs \texttt{names} gibt den Elementen eines
Vektors Namen

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{v }\OtherTok{=} \FunctionTok{c}\NormalTok{(}\AttributeTok{x=}\DecValTok{1}\NormalTok{,}\AttributeTok{y=}\DecValTok{2}\NormalTok{,}\AttributeTok{z=}\DecValTok{3}\NormalTok{)          }\CommentTok{\# Elementnamengeneration bei Vektorerzeugung}
\NormalTok{v                           }\CommentTok{\# Vektorausgabe}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
> x y z 
> 1 2 3
\end{verbatim}

Die Namen können zur Indizierung benutzt werden

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{v[}\StringTok{"y"}\NormalTok{]                      }\CommentTok{\# Indizierung per Namen}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
> y 
> 2
\end{verbatim}

\texttt{names()} kann zum Definieren und Aufrufen von Namen benutzt
werden

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{y }\OtherTok{=} \DecValTok{4}\SpecialCharTok{:}\DecValTok{6}                     \CommentTok{\# Erzeugung eines Vektors}
\FunctionTok{names}\NormalTok{(y) }\OtherTok{=} \FunctionTok{c}\NormalTok{(}\StringTok{"a"}\NormalTok{,}\StringTok{"b"}\NormalTok{,}\StringTok{"c"}\NormalTok{)   }\CommentTok{\# Definition von Namen}
\FunctionTok{names}\NormalTok{(y)                    }\CommentTok{\# Elementnamenaufruf}
\end{Highlighting}
\end{Shaded}

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

Benannte Namen können hilfreich sein, wenn der Vektor eine Sinneinheit
bildet

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{p }\OtherTok{=} \FunctionTok{c}\NormalTok{(}\AttributeTok{age    =} \DecValTok{31}\NormalTok{,         }\CommentTok{\# Alter (Jahre), Groesse (cm), Gewicht (kg) einer Person}
      \AttributeTok{height =} \DecValTok{198}\NormalTok{, }
      \AttributeTok{weight =} \DecValTok{75}\NormalTok{)}
\NormalTok{p                          }\CommentTok{\# Vektorausgabe}
\end{Highlighting}
\end{Shaded}
\end{frame}

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

Erzeugung

Charakterisierung

Indizierung

Arithmetik

Attribute

\textbf{Übungen und Selbstkontrollfragen}

\vfill
\end{frame}

\begin{frame}[fragile]{Übungen und Selbstkontrollfragen}
\protect\hypertarget{uxfcbungen-und-selbstkontrollfragen}{}
\vfill
\setstretch{2}
\small

\begin{enumerate}
\tightlist
\item
  Dokumentieren Sie die in dieser Einheit eingeführten R Befehle in
  einem R Skript.\\
\item
  Beschreiben Sie in einer Übersicht die R Datenstruktur ``Atomarer
  Vektor.''
\item
  Erläutern Sie die Funktion des Colonoperators in R.
\item
  Nennen Sie vier Prinzipien der Indizierung in R.
\item
  Erzeugen Sie einen Vektor der Dezimalzahlen 0.0, 0.05, 0.10 , 0.15,
  \ldots, 0.90, 0.95, 1.0.\\
\item
  Wählen Sie mithilfe positiver Indices die Elemente 0.0, 0.1,\ldots,
  0.9, 1.0 dieses Vektors aus.\\
\item
  Wählen Sie mithilfe negativer Indices die Elemente 0.0, 0.1,\ldots,
  0.9, 1.0 dieses Vektors aus.\\
\item
  Wählen Sie die letzten 10 Elemente dieses Vektors aus.
\item
  Erläutern Sie den Begriff der Datentypangleichung (Coercion).
\item
  Erläutern Sie den Begriff des (Vektor)Recylings.
\item
  Erläutern Sie die Bedeutung des R Datentyps \texttt{NA}.
\item
  Erläutern Sie das Konzept der Attribute in R. \vfill
\end{enumerate}
\end{frame}

\end{document}
