Introduction to R for Social Scientists A Tidy Programming Approach 1st Edition Ryan Kennedy - The ebook is ready for instant download and access
Introduction to R for Social Scientists A Tidy Programming Approach 1st Edition Ryan Kennedy - The ebook is ready for instant download and access
com
https://ebookmeta.com/product/introduction-to-r-for-social-
scientists-a-tidy-programming-approach-1st-edition-ryan-
kennedy/
OR CLICK HERE
DOWLOAD EBOOK
https://ebookmeta.com/product/an-introduction-to-python-programming-
for-scientists-and-engineers-johnny-wei-bing-lin/
ebookmeta.com
https://ebookmeta.com/product/programming-with-matlab-for-scientists-
a-beginner-s-introduction-1st-edition-mikhailov-eugeniy-e/
ebookmeta.com
https://ebookmeta.com/product/an-introduction-to-statistics-for-
canadian-social-scientists-3rd-edition-michael-haan-jenny-godley/
ebookmeta.com
https://ebookmeta.com/product/health-psychology-and-behaviour-change-
from-science-to-practice-tapper/
ebookmeta.com
Electrical Engineering Exam Prep Problems and Solutions
MLI Exam Prep Series Gupta
https://ebookmeta.com/product/electrical-engineering-exam-prep-
problems-and-solutions-mli-exam-prep-series-gupta/
ebookmeta.com
https://ebookmeta.com/product/beyond-imperfect-justice-1st-edition-
talita-dias/
ebookmeta.com
https://ebookmeta.com/product/a-history-of-data-visualization-and-
graphic-communication-michael-friendly/
ebookmeta.com
https://ebookmeta.com/product/race-matters-animal-matters-fugitive-
humanism-in-african-america-1840-1930-1st-edition-lindgren-johnson/
ebookmeta.com
Awakening the Ashes An Intellectual History of the Haitian
Revolution 1st Edition Marlene L Daut
https://ebookmeta.com/product/awakening-the-ashes-an-intellectual-
history-of-the-haitian-revolution-1st-edition-marlene-l-daut/
ebookmeta.com
Introduction to R for
Social Scientists
Chapman & Hall/CRC
Statistics in the Social and Behavioral Sciences Series
Series Editors
Jeff Gill, Steven Heeringa, Wim J. van der Linden, Tom Snijders
Recently Published Titles
Multilevel Modelling Using Mplus
Holmes Finch and Jocelyn Bolin
Bayesian Psychometric Modeling
Roy Levy and Robert J. Mislevy
Applied Survey Data Analysis, Second Edition
Steven G. Heering, Brady T. West, and Patricia A. Berglund
Adaptive Survey Design
Barry Schouten, Andy Peytchev, and James Wagner
Handbook of Item Response Theory, Volume One: Models
Wim J. van der Linden
Handbook of Item Response Theory, Volume Two: Statistical Tools
Wim J. van der Linden
Handbook of Item Response Theory, Volume Three: Applications
Wim J. van der Linden
Bayesian Demographic Estimation and Forecasting
John Bryant and Junni L. Zhang
Multivariate Analysis in the Behavioral Sciences, Second Edition
Kimmo Vehkalahti and Brian S. Everitt
Analysis of Integrated Data
Li-Chun Zhang and Raymond L. Chambers
Big Data and Social Science: Data Science Methods and Tools for Research and Practice,
Second Edition
Ian Foster, Rayid Ghani, Ron S. Jarmin, Frauke Kreuter and Julia Lane
by
Ryan Kennedy
Philip Waggoner
First edition published 2021
by CRC Press
6000 Broken Sound Parkway NW, Suite 300, Boca Raton, FL 33487-2742
The right of Ryan Kennedy and Philip Waggoner to be identified as authors of this work has been
asserted by him/her/them in accordance with sections 77 and 78 of the Copyright, Designs and
Patents Act 1988.
Reasonable efforts have been made to publish reliable data and information, but the author and pub
lisher cannot assume responsibility for the validity of all materials or the consequences of their use.
The authors and publishers have attempted to trace the copyright holders of all material reproduced
in this publication and apologize to copyright holders if permission to publish in this form has not
been obtained. If any copyright material has not been acknowledged please write and let us know so
we may rectify in any future reprint.
Except as permitted under U.S. Copyright Law, no part of this book may be reprinted, reproduced,
transmitted, or utilized in any form by any electronic, mechanical, or other means, now known or
hereafter invented, including photocopying, microfilming, and recording, or in any information
storage or retrieval system, without written permission from the publishers.
For permission to photocopy or use material electronically from this work, access www.copyright.
com or contact the Copyright Clearance Center, Inc. (CCC), 222 Rosewood Drive, Danvers, MA
01923, 978-750-8400. For works that are not available on CCC please contact mpkbookspermis
[email protected]
Trademark notice: Product or corporate names may be trademarks or registered trademarks and are
used only for identification and explanation without intent to infringe.
Preface vii
Overview of Chapters . . . . . . . . . . . . . . . . . . . . . . . . . viii
Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
About the Authors . . . . . . . . . . . . . . . . . . . . . . . . . . ix
1 Introduction 1
1.1 Why R? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Why This Book? . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Why the Tidyverse? . . . . . . . . . . . . . . . . . . . . . . . 6
1.4 What Tools Are Needed? . . . . . . . . . . . . . . . . . . . . 7
1.5 How This Book Can be Used in a Class . . . . . . . . . . . . 9
1.6 Plan for the Book . . . . . . . . . . . . . . . . . . . . . . . . 10
2 Foundations 13
2.1 Scripting with R . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2 Understanding R . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3 Working Directories . . . . . . . . . . . . . . . . . . . . . . . . 21
2.4 Setting Up an R Project . . . . . . . . . . . . . . . . . . . . 22
2.5 Loading and Using Packages and Libraries . . . . . . . . . . 24
2.6 Where to Get Help . . . . . . . . . . . . . . . . . . . . . . . 29
2.7 Concluding Remarks . . . . . . . . . . . . . . . . . . . . . . . 31
v
vi Contents
4.3 Histograms . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.4 Bar Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
4.5 Scatterplots . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
4.6 Combining Multiple Plots . . . . . . . . . . . . . . . . . . . . 90
4.7 Saving Your Plots . . . . . . . . . . . . . . . . . . . . . . . . 94
4.8 Advanced Visualizations . . . . . . . . . . . . . . . . . . . . 95
4.9 Concluding Remarks . . . . . . . . . . . . . . . . . . . . . . 99
Bibliography 189
Index 193
Preface
vii
viii Preface
Overview of Chapters
In the book, we cover the following topics for a full introduction to tidy R
programming for social scientists:
Acknowledgements
Though the final product we present in this book is our own (wherein we
accept full responsibility for any errors), we could not have produced this
book without the help and influence of many other excellent social scientists
and programmers. Thus, in the same open-source spirit, we would like to
acknowledge the following people for sharing and/or making code available:
Ling Zhu, Scott Basinger, Thomas Leeper, Max Kuhn, and Hadley Wickham.
R is a widely used statistical environment that has become very popular in the
social sciences because of its power and extensibility. However, the way that R
is taught to many social scientists is, we think, less than ideal. Many social
scientists come to R after learning another statistical program (e.g. SAS, SPSS,
or Stata). There are a variety of reasons they do this, such as finding there
are some tasks they cannot do in these other programs, collaborating with
colleagues who work in R, and/or being told that they need to learn R. For
others, R may be the first statistical program they encounter, but they come
to it without any kind of experience with programming (or even, increasingly,
using a text interface).
This is part of why “learning R” can be frustrating. Learning R for the first
time, most students are shown how to undertake particular tasks in the style
of a cookbook (i.e., here is how you conduct a regression analysis in R), with
little effort dedicated to developing an underlying intuition of how R works as
a language. As a result, for those who have experience with other statistical
programs, R comes across as a harder way to do the same things they can do
more easily in another program. This cookbook approach can also produce
frustration for those who are coming to R as their first statistical analysis
environment. Working with R in such a way becomes a process of copying and
pasting, with only a shallow understanding of why things have a particular
structure and, thus, difficulty moving beyond the demonstrated examples.
Finally, the cookbook approach is, in many ways, a holdover from the pre-
internet era, when large coding manuals were a critical reference for finding out
how to do anything in a complex program. These books had to be exhaustive,
since they were needed as much for reference as for learning the environment.
Today, however, there is a plethora of online materials to demonstrate how
to perform specific tasks in R, and exhaustiveness can come at a cost to
comprehension. What most beginners with R need is a concrete introduction
to the fundamentals, which will allow them to fully leverage the tools available
online.
This book is focused on equipping readers with the tools and knowledge to
overcome their initial frustration and fully engage with R. We introduce a
modern approach to programming in R – the Tidyverse. This set of tools
introduces a consistent grammar for working with R that allows users to
1
2 Introduction
quickly develop intuitions of how their code works and how to conduct new
tasks. We have found this increases the speed of learning and encourages
creativity in programming.
This book is based on an intensive 3-day workshop introducing R, taught by
one of the authors at the Inter-University Consortium for Political and Social
Research (ICPSR), as well as numerous workshops and classes (at both the
undergraduate and graduate levels) conducted by both authors. The goal is to
have the reader: (1) understand and feel comfortable using R for data analysis
tasks, (2) have the skills necessary to approach just about any task or program
in R with confidence, and (3) have an appreciation for that which R allows a
researcher to do and a desire to further their knowledge.
1.1 Why R?
If you have picked up this book, chances are that you already have a reason
for learning R. But let’s go through some of the more common reasons why
conducting your research in R is a good idea.
One of the major attractions of R is that it is free and open source. R was
created by Ross Ihaka and Robert Gentleman, of the Department of Statistics
at the University of Auckland, in the early 1990s (Ihaka and Gentleman, 1996).
It was designed to be a dialect of the popular S-PLUS statistical language
that was developed for Bell Labs. Unlike S-PLUS, however, R was released
under the GNU General Public License, which allows users to freely download,
alter, and redistribute it.
The result of this open source license is that R is accessible to everyone, without
exorbitant licensing fees. It is also regularly updated and maintained, with
frequent releases that allow for quick fixing of bugs and the addition of new
features.1 Perhaps most importantly, the open source nature allows users to
contribute their own additions to R in the form of “packages.” You will often
hear R users say, in response to a question about how to do something in
R, “There is a package for that.” From running advanced statistical models
to ordering an Uber (the ubeR package) or making a scatterplot with cats
instead of points (the CatterPlots package), it is likely that someone has
developed a way to do it in R. As of 2015, there were over 10,000 packages
on the Comprehensive R Archive Network (CRAN), with scores more being
created all the time. Indeed, the book you are reading now was originally
written completely in R using R Markdown and the bookdown package (Xie,
2019).
1 The major new release usually comes around October, so you should, at a minimum,
Third, the Tidyverse usually has a single obvious method for achieving a goal.
This draws from the philosophy that there should be one, and preferably only
one, obvious way to do a task. This is very useful for being able to learn quickly
and to understand what is being done in any example. A simple illustration of
this is creating a new variable that is our original variable times 1,000. In base
R, there are at least three ways to do this.
dataset$new_variable <- dataset$old_variable * 1000
Since there is no right way to do it, you will often find different preferences
within the same group of scholars (and sometimes within the same code). In
contrast, there is only one way to create this variable in the Tidyverse:
dataset <- dataset %>%
mutate(new_variable = old_variable * 1000)
From our experience, this makes it much easier to keep track of what is being
done, share your code with others, and avoid frustration spending hours finding
out what may have gone wrong with your analysis.
Fourth, while this book is intended primarily as an introduction to R, those
who already know some R will find it useful for learning how to write “tidy”
code in R. Many utilities in R are moving towards the Tidyverse structure
and grammar, and this book will provide the familiarity with the Tidyverse
needed to leverage these tools effectively.
Finally, the tools provided in the Tidyverse are extremely powerful. The
ggplot2 package, for example, has become the standard for most data visual
ization in R. The use of a consistent grammar makes it much easier to extend
and develop than traditional R packages. Think about it like learning a foreign
language. If the rules about, for example, how nouns are used changes from
situation to situation, this makes it more difficult to learn the language and
create your own statements. If, on the other hand, there is consistency in the
rules, you can apply those rules to extend to new situations much more easily.
release, the middle value is more minor release, and subsequent values (3rd and 4th, e.g.,
“9000”) reflect the most minor changes to the software. For example, upon writing this book,
the latest release of R is 3.6.1, meaning there have been 3 major releases of R, 6 slightly
minor releases, and 1 minor fix/release for the current version.
How This Book Can be Used in a Class 9
The goal of this chapter is to introduce you to key concepts used throughout
the book. The first part will focus on philosophy and terminology of R. The
second part of this chapter will focus on setting up the packages and libraries
you need and how to download useful additional tools. The third part will
introduce some of the resources you can use to help you out as you develop
your R skills.
We will not be going into any kind of depth about the underlying design
philosophy of R or some of the deeper programming principles of Base R.
There are plenty of other resources for readers to obtain this kind of knowledge
(Matloff, 2011; Leemis, 2016). Our goal here is to construct a solid platform for
you to conduct a wide range of social science work. After reading this chapter,
you should find it relatively easy to follow the subsequent chapters, as well as
to utilize online tutorials. We are assuming absolutely no previous experience
with R and RStudio. For those of you who have some previous background
with using R and RStudio, you can safely skim through some of the parts
that might already be familiar, but we do recommend at least taking a casual
glance at the subsections of this chapter to make sure we are not leveraging
something with which you may not have previously worked.
Before you start this chapter, be sure you have R and RStudio downloaded
and installed, since we will be using both. If you need help with this process,
or would like to start by having a more detailed understanding of the various
parts of RStudio, you can consult with the online resources before moving on.
13
14 Foundations
FIGURE 2.1
A View of RStudio Opened for the First Time
Give it a try. Type 1 + 1 in the console and hit Enter.1 You will see that R
prints the result, 2, on the screen.
1 + 1
## [1] 2
This interaction within the console is one of the key features of R. R is what
computer scientists call a “scripting” language. This means that, when a
command is passed to R, it is evaluated immediately. In contrast, “compiled”
languages, like C or C++, are ones where there is an intermediate step
between writing the command and running the command. The code is compiled
into native machine language before being run. While programs in compiled
languages tend to run faster, the advantage of scripting languages is that they
are usually easier to learn and allow for closer interaction in the context of
data analysis. Moreover, as computers have become more powerful, the speed
advantages of compiled languages (except for very intensive tasks) has tended
to dissipate.2
1 Note that you can either include or omit spaces between values. While the command will
run either way, we recommend spaces between values in a function call to allow for easier
reading of the code. E.g., 1 + 1 is cleaner and easier to read than 1+1; this will become
clearer as functions and commands get more complicated later in the book.
2 Note that recent efforts have been made to combine the efficiency and speed of scripting
and compiled languages. For example, there are R packages that will allow you to interact
with C++, Java, Python and other languages and tools. Indeed, many of the functions in
base R are actually written in C!
Scripting with R 15
## [1] 2
On the right-hand side of our screen when you first open RStudio, you will
see two windows. On the upper-right-hand side, you will see a series of tabs,
labeled “Environment”, “History”, “Connections”, and (sometimes) “Build.”
We will only be using two of those tabs in this book. The Environment tab
shows all the objects you have stored in memory for use in your R session. So,
for example, if you load a data set, you will see it show up in the Environment
tab. The History tab records all the commands you have made recently. If you
ever want to enter one of these commands into the Console, you can simply
double-click on it.
On the lower-right-hand side, you will see five tabs. The “Files” tab shows
all the files in your working directory. You can use this interactively to see
what you have in your working directory, as well as any other areas of your file
system. The “Plots” tab will show you any graphs that you make, and allow you
to export them for use in your publications. We will use this extensively in our
chapter on producing plots. The “Packages” tab shows you all the packages you
have installed, and will check any that you have loaded into your environment
(more on this below). The “Help” tab can be used whenever you call for the
R documentation on a function. For example, if you type help("cor") or
?cor, it will show you the R documentation for the cor() function (which,
as you might guess, calculates the correlation between variables). The Viewer
tab is for viewing local web content. We will be using this when we design
three-dimensional plots later in the book.
Once you have opened RStudio, you can open the script containing your code
for an analysis by either selecting File » Open File in the dropdown menus, or
by clicking on the folder icon. You can create a new script by selecting “File”
» “New File” » “R Script” from the dropdown menu or by clicking on the
blank page icon and choosing R Script. You will also notice that beside the
16 Foundations
Exercises
2.1.0.0.1 Easy
• Practice interacting with the console. What happens when you type
"Hello World" into the console and press Enter? What happens when
you type 3492 / 12 and press Enter?
• Open a new blank script in three ways: by going to File » New File » R
Script, using the “Ctrl+Shift+N” keyboard shortcut, and clicking on the
new script icon. In one of these scripts, type the commands from questions
1 and 2. Run them from the script file.
• To paste (“concatenate”) together more than one string, you can use the
paste() function. Try this. Type in paste("Hello", "World!"). What
happens when you put in a number, like paste("Hole in", 1, "!")?
2.1.0.0.2 Intermediate
• What happens when you type the following command into the command
line, round(sqrt(122.563ˆ2, 2)? How would you correct this?
• What error message do you get when you type in "two" + 2 (be sure to
include the quotation marks)? What do you think this means?
Understanding R 17
2.1.0.0.3 Advanced
• Previewing what we will see below, type "two" * 2 into the console. What
error message do you receive? What do you think this means? Feel free to
look up the error message online to help.
• We will not discuss all the possible mathematical operators for R in
this book, but there are a number of additional operators about which
you might be interested. What do **, %%, and %/% do? You can look for
information online.
2.2 Understanding R
The foundations of R are pretty simple, but are often a stumbling block for
new users. Two general rules that we will often return to are:
1. Everything in R is an object.
2. Anything that does something is a function.
2.2.1 Objects
Just like objects in the real world, objects in R have “attributes.” For example,
the number 1 and the string “one” are both objects in R, but they have
different attributes. These attributes determine what you can do with them.
For example, adding two numbers makes sense, so running 1 + 1 in the R
console will produce an outcome. Adding two strings does not make sense, so
running "one" + "one" in the R console will return an error message.3
We will often use the class() function to get some information about the
objects. For example, if you run class(1) in the console, it will return numeric.
Alternatively, if you run class("1"), it will return that it is a character.
class(1)
## [1] "numeric"
3 Some programming languages, like Python, will allow you to use mathematical operators
with non-numeric values. For example, in Python, "one" + "one" would produce “oneone”
(the same outcome as paste("one", "one") in R) or "one" * 3 would produce “oneoneone”
(the same as rep("one", 3) in R).
18 Foundations
class("1")
## [1] "character"
There are times when we will simply want the objects printed in the console,
and other times when we will want to save those objects for later use. To save
an object to memory in your R session, you can use assignment operators,
which are either <- or =. When you do this, it will appear in the Environment
tab in the upper-right-hand corner of RStudio. The <- and = are synonymous,
but most R users, by convention, use <- for object assignment.4 In RStudio,
you can also use the keyboard shortcut “Alt + -” to create <- (“Option + -”
in Mac OS).
So, in the example that follows, the first line will simply print the results of 1
+ 1 to the console. The second saves the object to memory and calls it two.
To print this in the console, we simply run two in the console and it prints the
object on the screen.
1 + 1
## [1] 2
two <- 1 + 1
two
## [1] 2
R is what is called a strongly typed language. This means that capitalization
and punctuation are important. The object Two is not the same as the object
two. Getting an error returned saying that an object does not exist is often
due to spelling or capitalization mistakes. Here is a quick example.
two <- 2
Two <- 2.2
two
## [1] 2
Two
## [1] 2.2
two == Two
## [1] FALSE
4 The original computers used by Bell Labs in creating R had a single key that produced
this assignment operator. Most users still prefer it today both for style reasons and because
of some rare situations where the = may demonstrate unexpected behavior.
Understanding R 19
2.2.2 Functions
Functions in R work the same way as the functions you learned about in
elementary school math. They take an object, do something to it, and return
another object. Functions in R are usually denoted by their use of parentheses.
As we mentioned, everything that does something in R is a function, making
R a “functional programming language.”
As you might have guessed from the last paragraph, you have already learned
a function in this book. The class() function takes an object as its input and
returns the name of the class of the object as a character string.
The inputs into a function are called “arguments.” And running the function
is called a “function call.” Some functions take a single argument and return a
single object. Other functions can take on many arguments, and can return
many objects. Some functions will have “default” arguments and behavior,
so you do not need to type every input. For example, if you type help()
into the console (with no argument), the Help tab in the lower-right side
of RStudio will bring up the documentation for the help() function. If you
type help("lm"), you have passed an argument to it (labeled “topic” in the
help() documentation) asking for the help documentation on fitting a linear
regression model (lm), and returns this documentation instead of the default.
So, you might be wondering how functions fit within the rule that everything
is an object in R. . .
Functions are also objects.
For example, if we look at the class of the help() function, we will see that it re
turns an object class – in this case it is a special class help_files_with_topic.
Though this function technically does the job, suppose you wanted to follow
best practices of function-writing, and wanted to make this function defensive.5
To do so, you might be interested in testing out various warning messages
based on a mistake on the part of the user. So you might update the function
to be:
solve_for_c <- function(a, b){
sqrt(a^2 + b^2)
if (!is.numeric(a)) {
stop('"a" must be numeric\n',
'You have provided an object of class: ', class(a)[1])
}
}
This warning would let the user know 1) whether a non-numeric value was
supplied to the function, and 2) the class of the object(s) supplied. Though
these ideas and terms are covered in depth later in the book, the point here is
that you could use the # to comment-out the warning message and redefine
the function to test it in real-time, e.g.,
solve_for_c <- function(a, b){
sqrt(a^2 + b^2)
#if (!is.numeric(a)) {
# stop('"a" must be numeric\n',
# 'You have provided an object of class: ', class(a)[1])
#}
}
When you call your function solve_for_c() with the warning commented
out, the call will ignore all of the code following each # and simply run the
calculation included at the outset in the simplest version of the function.
A few things to note when using the #. First, when commenting multiple
lines, you must include the # before each line; otherwise, calling the function
will throw an error. Second, especially in larger chunks of code, be sure that
only the parts you intend to comment-out are indeed commented out. The
most common error in this regard is commenting out a chunk of code as
in the example above, but forgetting to also comment out the closing } on
the penultimate line of the function. Here again, failing to do so and then
attempting to call the function will throw an error. And finally, we recommend
5 Note: we cover defensive programming in the context of user-defined functions in the
liberal use of comments, especially when writing large chunks of code or writing
code in real-time (e.g., during class or a lab session). Comments in this context
are exceedingly valuable for annotating complex code that you may forget
when you return to the script. You will see us including comments in code
throughout this book.
Exercises
2.2.3.0.1 Easy
• In the previous exercises we used the paste() function to paste (con
catenate) words and symbols together. You may have noticed that it
automatically added a space between the items we are pasting together.
For example paste("Hole in", 1, "!") places a space between “1” and
“!”. Type in ?paste().
– Reading the help, what argument sets this?
– What is its default?
– How can you eliminate the space (or add something different)?
2.2.3.0.2 Intermediate
• Technically, in question 9, there are two ways to eliminate the space
between words. What is the other way to do this?
2.2.3.0.3 Advanced
• In this section, we said that functions are usually denoted by parentheses,
but you have seen symbols that do things without parentheses. Specifically
mathematical operators, like +, -, /, and *. Type ?'+' into the console.
What does it tell you about these operators?
• Try typing '+'(1, 1) into the console. What does it produce? How does
it show that these operators are, in fact, similar to other functions?
file path for the location of the currently assigned working directory. If users
are happy with this location, no further action is needed.
But if you want to change this, then they need a slightly different
command, setwd(), with the name of the new file path included in
quotation marks in the parentheses. For example, typing the following,
setwd("/Users/username/Desktop"), will set the working directory to be on
the desktop of a Macintosh computer for user, username. For Windows users,
the command will take the form setwd("C:/Users/username/Desktop/").
While we recommend users become familiar with their file system and set
their working directory by command, those who are less familiar with their
computer’s file system may also set their working directory using an interactive
browser. This can be accessed through the dropdown menu by going to Session
» Set Working Directory » Choose Directory (or using the “Ctrl+Shift+H”
keyboard shortcut). In the examples in the following chapters, we will use the
command setwd(choose.dir()), which also allows the user to interactively
set the working directory if using Windows or Mac OSX, but we strongly
recommend you become used to setting your working directory using one of
the other methods, or that you start using R projects, which are explained in
the next section.
Things get a lot worse when you start working with other people. Their
directories are likely to be structured differently than yours, meaning that
they cannot just run your code – they must find where you make reference to
a directory and change it. This can get so annoying that one Twitter post to
the #rstats discussion thread threatened to set a user’s computer on fire if
their code included the setwd() command.6
While threatening to set someone’s computer on fire may be a little extreme,
the reality is that including information that will only work on your computer
is inconvenient for you (at least if you ever plan on doing work on a different
computer) and discourteous to anyone with whom you work.
Luckily, there is another way to do things. In RStudio, you can set up a
“project.” The project stores information needed to run your code and find
your files, without you always having to tell it where to look. It also makes
sure that those with whom you are working do not revolt when working with
your code.
To create a project, just go to the Project menu in the upper-right-hand corner
of RStudio, and select New Project. Once you have done this, you will be
asked if you would like to create the project in a new directory or an existing
directory. If you already have a folder containing your data, you might choose
an existing folder. If you are starting from scratch, or simply want a new folder
with which to do your work, choose a new directory. Locate the area into which
you want to put your project, and, if it is a new directory, give it a name. For
step-by-step instructions with illustrations, you can go to the book’s support
website.
RStudio will create a new file with a .Rproj extension. Whenever you open
this file, either by double-clicking on it or navigating to it using the Project
menu, it will automatically set your working directory to the location of the
.Rproj file. If you copy the folder to a new computer - no problem, all your
code will still work. If you work with a co-author through Dropbox or another
shared system - no problem, they can simply open the .Rproj folder and it
will work. (Note: If using Dropbox, you may want to pause syncing while you
are working on a project to avoid error messages.)
In subsequent chapters, we will use the setwd(choose.dir()) command to set
the working directory so that each chapter is self-contained, but in some of the
online scripts we provide examples of .Rproj files as well, and we recommend
you get used to using and creating these.
6 https://www.tidyverse.org/articles/2017/12/workflow-vs-script/
24 Foundations
this, you can type in the packages you want and click “Install” to install them.
This can be useful because RStudio will list the packages that match your
search as you type, avoiding common errors in spelling or capitalization.
Once you have installed a package, it is on your computer and you do not need
to install it again when you restart R or start a new project, though you may
need to reinstall packages when you update your R and/or RStudio versions.
To use a package, you will need to load it using the library() function every
time you restart R or start a new project.7
Now that you know the general use of packages and libraries, we will provide
an overview of some of the main packages we will use throughout the book.
The here package allows you to use the here() function to create a string
with the information you need to point R to a particular file. For example, if
7 Note: alternatively, you can save libraries to your R profile, but we do not recommend
doing this because your needs will likely change over time.
26 Foundations
we have set our working directory to the desktop and we want R to access
the dataset.csv file in the Data folder on the desktop, would simply use
here("Data", "dataset.csv"). As you can see in the code block that follows,
this simply outputs a string with that location.
here("Data", "dataset.csv")
## [1] "/Users/waggoner/Dropbox/.../Data/dataset.csv
Whenever we use a function to load our data, we can place this here() call
into the function to load the data.
read_csv(here("Data", "dataset.csv"))
amerika supplies a color scheme that mimics traditional colors for graphics
about American politics (i.e., red for Republicans and blue for Democrats)
(Waggoner, 2019).
arm is a compilation of many useful packages for analysis associated with
Andrew Gelman and Jennifer Hill’s popular book, “Data Analysis Using
Regression and Multilevel/Hierarchical Models” (Gelman and Hill, 2006).
faraway is a compilation of data sets and functions from Julian Faraway’s
book, Extending the Linear Model with R: Generalized Linear, Mixed Effects
and Nonparametric Regression Models (Faraway, 2016).
MASS is a compilation of data sets and functions from Bill Venables and Brian
Ripley’s book, Modern Applied Statistics with S-PLUS (Venables and Ripley,
2013).
OOmisc contains a set of useful miscellaneous functions produced by Ozgur
Asar and Ozlem Ilk.
pROC is a package of functions to produce and analyze receiver operating
characteristic (ROC) curves.
lmtest is a package of functions for analyzing regression models, including
likelihood-ratio tests.
rstatix is a package for evaluating basic statistical functions such as t-tests.
car provides functions utilized in John Fox and Sanford Weisberg’s book, An
R Companion to Applied Regression (Fox and Weisberg, 2018).
plotly is a powerful package for advanced plotting, including interactive plots.
broom is a Tidyverse-complementary package for inspection of model objects,
which is much more thorough than the summary() function in base R.
patchwork is a Tidyverse-complementary package for placing ggplot objects
in a single pane with minimal code.
performance is a package from the easystats software group that includes a
host of performance checks for regression models.
see is a Tidyverse-complementary visualization package from the easystats
software group that complements ggplot2, and also allows for plotting objects
created using the performance package.
You can install all of the packages needed for this book by running the following
code chunk in your console. Alternatively, you can click on the “Packages”
tab in the lower-right-hand corner of RStudio, click “Install,” type in all the
packages you want (separated with a comma or space), and click “Install.”
install.packages(c("tidyverse", "here", "readxl", "haven",
"janitor", "stargazer", "forcats", "skimr",
Where to Get Help 29
Exercises
2.5.6.0.1 Easy
• Try installing and loading the arm package from Gelman and Hill’s book
(Gelman and Hill, 2006). Make sure you understand this process.
• Install the other packages needed for this book. Try loading tidyverse
and here.
2.5.6.0.2 Intermediate
• You may have noticed that we used the c() function to create a vector of
packages we wanted to install. Run ?c(). What does this tell you about
the c() function? What happens when you type c(1, 2, 3) into the
console? Why?
• Set up an R project called “R Code” somewhere on your system. You can
either create the folder and then create the project, or you can create the
folder by creating a project. What happens when you open the project?
Now create subfolders in the project location for “Data” and “Code”. Use
the here() function to create a string that indicates these subfolders.
2.5.6.0.3 Advanced
• Some even newer packages are available on GitHub, a repository for
programs and packages that is open to anyone. How would you install a
package from GitHub? Try installing the package fliptime, which might
be useful for those of you working with data with calendar dates, from
the GitHub address "Displayr/flipTime".
Det föll honom aldrig in, att det kunde bli någon svårighet att fylla
de platser, han så ädelmodigt köpt. Alla människor tykte mera eller
mindre om musik, alla människor voro intresserade af det, som var
nytt, och sir John viste, att alla hans bekanta tykte om honom; han
var därför öfvertygad om, att hans vänner och bekanta mangrant
skulle infinna sig, då han skickade dem fribiljetter till konserten, i
synnerhet som de för närvarande icke voro synnerligen upptagna af
sällskapliga plikter.
Då han därför antydde för fru Marjoribanks, att han skulle skicka
henne några biljetter till fröken Kostolitz' konsert, gjorde han det
snarare med minen hos en person, som beviljar en ynnest, än hos
en, som begär en dylik. Men fru Marjoribanks rätade på sig på ett
sätt, som alldeles bragte honom ur konceptena.
— Fröken Kostolitz, upprepade hon stelt. Får jag fråga hvem
fröken
Kostolitz är?
— Den nyaste stjärnan, genmälde sir John, blott att ingen ännu
hört henne. Men, om jag inte misstager mig, kommer hon att bli så
mycket ryktbarare efter denna konsert.
Älsta fröken Marjoribanks såg på sin mor; den andra såg på sir
John och såg sedan bort. Han började känna sig otreflig till mods.
Fru Marjoribanks lutade sig ännu mera tillbaka i sin stol och
betraktade honom en stund undan sina sänkta ögonlock. Sedan
frågade hon helt lugnt:
— Och huru har ni varit i tillfälle att höra henne, sir John?
— Jag trodde just, att det skulle vara hon, sade hon lugnt och
vände sig åter till honom. Ni träffar henne tämligen ofta, icke sant?
— Man lär sig så länge man lefver, som ni ser, svarade Croft lugnt;
hittils har jag varit den lilla fågeln, som kunde sjunga, men ej ville
det.
— Jag hoppas, att hon med tiden skall lära mig det, svarade sir
John. När man vid mina år börjar gå i skolan, kan man ej i en
handvändning bli fullkomlig. Nu skall jag skicka er biljetterna och om
några af edra bekanta skulle ha lust att gå dit, så kan jag stå till
tjänst med flere.
— Då jag skänker mina vänner någonting, hyser jag för det mesta
den åsikten, att de äro mig tack skyldiga därför, svarade sir John
med bibehållet lugn, ehuru han började bli ond.
— Så ädelmodigt af er! Och ni gör icke blott mig utan också mina
vänner detta anbud! Ni tyckes ha ett oinskränkt antal biljetter till ert
förfogande.
— Les amis de nos amis sont nos amis, svarade Croft skämtsamt.
Saken är den, att jag önskade, att de rätta personerna skulle komma
på denna konsert, då det är den första — ty ni vet ju, att så mycket
beror på en god början. Om ni nu värkligen vill vara snäll, fru
Marjoribanks, så öfvertalar ni några af edra vänner att gå dit.
— Sir John har börjat märkvärdigt väl förstå sig på musik, sade en
af dem.
— Jag tycker, sade fru Marjoribanks, att det är för kallt att gå på
konserter och dessutom kan ett violinföredrag bli mycket tröttande,
ifall den spelande ej är en artist af allra — allra första rangen. Nej,
jag tackar, sir John, jag tror, att jag afstår från biljetterna; om jag
tog emot dem skulle jag troligtvis icke använda dem och då blefve ni
förargad. Det är bättre att vara uppriktig, icke sant?
Croft stannade kvar några ögonblick och talade om likgiltiga saker,
för att hans förstämning ej skulle vara alt för märkbar, och sedan tog
han afsked och gick.
— Javisst!
— Ack ja, drog sir John sig till minnes. Jag ämnade fara, men —
— Hör ni, sade Croft hastigt, ni kunde just göra mig en tjänst. Ett
par damer, som jag är bekant med, gifva nästa vecka en konsert. Ni
har måhända redan läst annonserna — mademoiselle Kostolitz'
konsert i Steinwaysalen. Vill ni inte med litet trumpetstötar förkunna
saken i edra olika tidningar och om ni sedan gick dit och skref litet
om saken vore det ännu bättre.
— Jag tackar, svarade den andra, som kände sig helt road af
saken. Jag skall infinna mig, ifall jag ej är upptagen på annat håll.
Hon är en väninna till er?
Croft återvände till sin bostad; han kände sig missmodig och
nedslagen. Han skulle få mycket mera besvär med dessa biljetter än
han någonsin kunnat tro; han beslöt att icke mera personligen
erbjuda dem åt någon. Han skref därför på aftonen flere bref och
erbjöd dem alldeles i förbigående åt sina vänner, i det han
omnämde, att han kände den unga konstnärinnan och att det skulle
fägna honom, om man behedrade konserten med sitt besök.
Men han blef endast utsatt för nya missräkningar. Somliga af
brefven besvarades icke alls och de som mottagit de andra tyktes
icke vara belåtna. Somliga skickade biljetterna tillbaka; andra voro
icke säkra på, huruvida de skulle kunna gå; ingen människa tyktes
fägna sig eller vara vänligt stämd. Sir John kunde icke förstå det.
Han beslöt att gå till den dam, i hvars salong Valérie en gång spelat;
hon viste åtminstone hvad Valérie presterade och hon skulle kunna
hjälpa honom, Han måste ha gått dumt tillväga, eftersom alla hans
försök misslyckades. Samma morgon han fattat detta beslut fick han
ett bref från lady Mary Bracken, i hvilket hon underrättade honom
om, att hon var i staden i och för affärsangelägenheter och att hon
enträget önskade få tala med honom om en viktig och brådskande
angelägenhet. "Det är väl någonting angående distriktssystern",
tänkte han otåligt, men han kände sig likväl glad. Han skulle värfva
sin tant för sina väninnors sak, ty han började småningom känna sig
allvarsamt orolig. Tänk om han ej lyckades placera biljetterna, och
Valérie, i stället för det utvalda sällskap, han hoppats omgifva henne
med, endast fann tomma bänkar, huru skulle det då gå? Margot
hade nyss alldeles förtjust talat med honom om, huru
förvånansvärdt bra biljetterna gingo åt.
— Kan ni tänka er, att vi redan sålt mera än vi behöfva för att
betala hyran för salen, hade hon sagt. Jag var först så orolig, icke
blott för pengarnas skull, utan emedan det är så viktigt för Valérie,
att denna hennes första konsert blir väl besökt; hon skulle bli
förfärligt nedslagen, om hon såg tomma bänkar framför sig.
Det gick en kall kåre öfver ryggen på sir John, då han tänkte på
dessa ord; huru skulle det gå, om han ej lyckades fylla dessa tomma
platser. Därför andades han lättare vid underrättelsen om lady Marys
Brackens ankomst.
Men först gjorde han likväl sitt besök hon den andra damen; han
väntade stor hjälp af henne. Hon var en klok och världsvan kvinna,
som viste, huru hon skulle taga människorna. Hon var dessutom
ofantligt omtykt och hon höll mycket af sir John, hvilken hon kände
från barnaåren.
Hon tog mycket hjärtligt emot honom, men då han kom fram med
sina önskningar, skrattade hon honom midt upp i ansiktet.
— Hvad menar ni därmed? frågade sir John. Han stod med ryggen
åt kaminen och såg ned på henne med en förbittrad blick.
Hon smålog efterseende emot honom och gaf honom ett tecken
att slå sig ned på en stol bredvid henne.
— Tag plats, min bäste John, sade hon, jag ville gärna tala med er.
Ni är precis samme Don Quixote som i forna dagar, då ni brukade ge
min guvernant en uppsträckning, när hon enligt er åsikt var orättvis
emot mig. Ni menade så väl, ni stackars, snälle gosse, men efteråt
var hon blott så mycket elakare emot mig. Förstår ni den moral, jag
försöker hänsyfta på? Ni vill hjälpa dessa täcka, små konstnärinnor,
och ni skadar dem endast. Ni gör dem löjliga.
Croft svarade icke, men hans väninna hade alt blifvit skrämd öfver
uttrycket i hans ansikte, ifall hon sett på honom. Hon viste
emellertid, att hennes yttrande icke kunde vara angenämt för honom
och sysselsatte sig därför med att betrakta de broderade tåspetsarna
på sina näpna skor.
— Ni vet, fortfor hon i nästan smeksam ton, att ingen kan hålla sig
för skratt, när det blir fråga om er plötsliga musikentusiasm; ni har
aldrig förut velat påstå, att ni kunde skilja den ena noten från den
andra. Och jag tror ej att någon hört er röst, utom då ni deltagit i
jaktsånger. Och när ni nu vid trettiotvå års ålder börjar taga
sånglektioner, nät ni egnar er åt en ung, vacker konstnärinnas
intressen, gör er till hennes ciceron, snokar upp elever åt henne,
anhåller om inbjudningar för henne, och nu slutligen går från dörr till
dörr — som ett slags musikalisk handelsresande — och ber folk taga
emot konsertbiljetter — ja, vet ni, min käre John, så är detta en
smulförrykt! Jag kan försäkra er, att jag varit på minst sex ställen där
människorna talade därom. Ni har bedrifvit affären så gros, att
människorna ovillkorligt måste skratta åt er. Om det vore någon
annan än ni skulle hela världen finna saken misstänklig. Och jag tror
till och med, att många göra det nu. Men de som känna er lika bra
som jag — hon blinkade vänligt åt honom — de veta, att ni är en
hederlig, godhjärtad, samvetesgrann människa, och de skratta blott
och undra hvem denna flicka är, för hvars skull John Croft bär sig så
narraktigt åt? Hon kan icke vara någon så stor konstnärinna, annars
behöfde han ej göra så våldsamma ansträngningar för att trumma
ihop en publik åt henne. Människorna äro elaka, käre John, ty de
säga detta.
Hon såg skrattande upp till honom, men skrattet dog bort på
hennes läppar, då hon varseblef det smärtsamma allvaret i hans
anletsdrag. Han kom ihåg Margots ord, som hon yttrat vid två olika
tillfällen: "Ni gör oss till föremål för åtlöje", och sedan: "Världen är
en ovänlig ort, full af kritiserande andar."
— Ja, det var värkligen en bra förrykt idé, sade hon skrattande.
Men oroa er inte för den skull; då de i alla fall få sina utgifter betäkta
och således icke lida någon förlust; är ju ingen olycka skedd. Om ni
vill placera edra pengar på det viset, så står det er ju fritt.
— Ni kan omöjligt fylla den; det är inte värdt, att ni räknar därpå.
Jag skall göra hvad jag kan för att placera några af dessa olyckliga
biljetter, men jag kan inte lofva mycket. Då er väninnas rykte är
stadfäst, strömma åhörarna nog till; men, min käre John, jag kan
försäkra er, att ingen nu har lust att komma och jag kan ej tvinga
någon.
— Men de hörde henne likväl med största nöje här hos er, sade
han dystert.
— Ja, det var någonting helt annat. Om jag kunde få tag i några
af de värkligt musikaliska människor jag hade här den där aftonen,
så kunde jag måhända öfvertala dem; men de äro tunnsådda, skall
jag säga er. Hälften af alla de människor, som applådera så
stormande, veta lika mycket om musik som ni, käre John — skulle
jag ha sagt, innan jag fick höra talas om er förborgade talang.
Hon sade det med ett så förtrollande, illparigt leende, att han ej
kunde bli ond på henne; men han gick just icke mycket tröstad
därifrån.
— Jag sade till, att tjänarna icke behöfde taga bort alt detta,
förklarade hon, ty jag stannar endast några dagar här i och för
affärsangelägenheter. Ja, min käre John, jag har lidit stora
missräkningar. Min "Mödra-uppfostrings-förening" har icke i något
afseende motsvarat mina förhoppningar!
Sir John slog sig ned i soffan bredvid henne och hans ansikte
antog ett för tillfället passande uttryck af bekymmer.
— Hvad säger du! Vilja mödrarna icke låta uppfostra sig? frågade
han.
— Jag vet inte huru det hänger ihop, svarade lady Mary alldeles
tröstlös, de tyckas icke mera vilja komma dit. Jag hade just inrättat
alt så trefligt, subskriptionerna voro endast formella och jag hade till
och med faststält, att alla de som önskade det kunde taga råvarorna
med sig och endast få undervisning i tillredningen. Men det tyckes
icke ha behagat dem. Och det värsta af alt är, att de, som
genomgått en kurs, icke ens använda det som de lärt sig. Jag
träffade nyligen fru Miggins just som hon serverade sin man det
afskyvärdaste kaffe — tjokt som gröt. Helt enkelt kokadt i panna och
serveradt med bottensatsen uti; och hon hade ändå lärt sig det så
bra — att klara det med ett ägg, då det ej finnes någon sil till hands.
Men det tjänar till ingenting att predika för dylika människor; hon
sade, att hon ej hade råd att använda något ägg och att herr
Miggins tykte, att kaffesatsen gjorde kaffet starkare.
— Här sitter jag nu med den stora byggnaden, fortfor hon. Jag har
en plan, den allra förträffligaste plan, om jag blott kunde realisera
den. Jag tänkte, att jag skulle grundlägga en "Lefnadshamn för
gamla, aktningsvärda, gifta fattiga." Det skär mig alltid i hjärtat, när
jag tänker på de stackars, gamla människorna, som måste komma in
på fattighuset, sedan de lefvat ordentligt och ärbart i femtio, sextio
år. Jag har alltid tykt det vara så grymt och orättvist, att de icke
skulle ha något hem mera. Tycker du inte detsamma, John?
Tårarna stodo henne i ögonen och man kunde icke tvifla på
hennes medlidande. Han instämde varmt och hon fortfor
entusiastiskt:
Hvilka lady Marys planer än voro, fick sir John ej höra dem i dag,
ty han gaf samtalet en ny vändning i det han plötsligt sade:
— John, sade hon allvarsamt, det påminner mig om, att jag måste
tala med dig. Det var därför jag skickade bud på dig. Det är mycket
viktigt. Jag är värkligen alldeles bestört. John, hvad har du gjort med
den lilla flolspelerskan?
— Jag har sökt förmå folk att taga biljetter till hennes konsert,
svarade han melankoliskt och biktade det bekymmer, som i denna
stund så tungt hvilade på hans själ.
— Och du far omkring i cab med henne likasom Nicholas Nickelby
och världsundret. Detta har alltid förefallit mig så löjligt. Kommer du
ihåg de blå benkläderna och det gröna parasollet? — Lady Mary
började skratta, så att näsan rynkades. Ja, ja, världsundret och
fröken Snevellici. Du milde himmel, så förrykt. Men allvarsamt, John,
jag tror inte det är rätt, att du gör någonting dylikt.
— Min bästa tant, svarade Croft leende, ehuru han var mycket
bedröfvad till sinnes, jag har en gång följt med fröken Kostolitz på
en konsert, emedan hennes syster icke kunde göra det. Jag försöker
nu henne ovetande prångla ut några biljetter åt henne, emedan de
äro fattiga och ej ha några bekanta. Hvarför kan jag slutligen och
sist ej få försöka att göra godt på mitt eget vis? Du hjälper mödrarna
i din by och de fattiga gubbarne och gummorna. Jag försöker
bispringa framåtsträfvande, unga konstnärinnor.
— Ja, det är visserligen sant! Men, min käre gosse, du vet, att
människorna icke komma att se det från den sidan. De tro att du är
— hm ja, folket i byn skulle säga, att du "går" med fröken Kostolitz,
och som du blifvit bekant med henne hemma hos mig känner jag
mig på sätt och vis ansvarig för saken och därför skickade jag bud
på dig. Det går inte an, nej, vet du, värkligen icke. Du kan icke
blanda dig i andras angelägenheter, framför alt icke i ett par unga
flickors, utan att människorna tro, att det ligger någonting därunder.
Lyd nu mitt råd och lämna flickan åt sitt öde.
John var mycket nedstämd, men han försökte dölja det och
svarade helt lugnt:
— Jag försäkrar dig, tant Mary, att fröken Kostolitz och jag ej göra
någonting orätt. Hör nu på mig och låtom oss ingå en
öfverenskommelse. Om du förmår tjugu personer att gå på hennes
konsert, skall jag gifva dig tjugu pund till din fattighamn. Jag skall
skicka dig biljetterna, fribiljetter förstås, så du har ingen svårighet
att bli af med dem. Vill du det?
— Det gör mig mycket ondt om dem, svarade sir John. Men en
öfverenskommelse är en öfverenskommelse. Du måste skaffa mig
mina tjugu personer, innan jag gifver dig dina tjugu pund; och du får
naturligtvis icke nämna ett ord om mig. Du kan ju säga, att du gör
det, emedan du intresserar dig för fröken Kostolitz. Och det kommer
att förefalla helt naturligt, eftersom hon varit hos dig på
Brackenhurst. Du försöker det ju i morgon, icke sant?
— I morgon, sade lady Mary dröjande, i morgon hade jag för hela
dagen ämnat begifva mig till Whitechapel. Där finnes en inrättning
—
— Mina fattiga förtjäna visserligen all hjälp de kunna få, sade hon
efter en paus. Då hälgar nog ändamålet medlen, men jag tycker inte
om den där historien och jag förstår dig inte, käre John. Det ligger
någonting därunder — det är inte värdt, att du låtsas som det ej
vore fallet.
Hon lät sina skarpa ögon en sekund hvila på honom och fortfor
sedan:
— Om det inte är den ena systern, så är det den andra. Jag tror,
att det är den andra. Jag tykte mest om henne af de båda systrarna
och jag minnes, att du gjorde detsamma och det är äfven hon, som
gifver musiklektioner. Nå, hon är en liten, söt varelse och du kommer
att ångra dig, om du utsätter henne för människornas skvaller och
prat. Men gå nu, ty jag har bref att skrifva. Jag skall göra hvad jag
kan för den där tråkiga konserten — ja, jag skall gå dit; men, om du
vill följa mitt råd, så håller du dig därifrån. Adjö nu.
Han tog reda på sin hatt och käpp med ett lugn och en
långsamhet, som stodo i den skarpaste motsats till stormen i hans
inre, sedan kyste han sin tant lätt på pannan och lämnade rummet,
och lady Mary ropade efter honom, att han själf skulle stänga
ytterdörren, emedan hon hade så få tjänare i staden. Medan han
nere i hallen tände sin cigarrett, tänkte han inom sig: Det är lätt för
henne att säga: "Lämna flickan åt sitt öde." Men frågan är just: "Kan
jag det?"
XIII.
Inga människor syntes till utanför dörren, men han hade med
afsikt kommit tidigt. Salen var också blott sparsamt fyld. Han satte
sig på den plats Margot valt åt honom, ty hon hade skänkt honom
en biljett — och väntade ångestfullt. Han kände sig för nervös för att
fördrifva tiden med att söka upp Margot och hennes syster. Nu
önskade han innerligt, att han aldrig gifvit sitt råd — bördan af det
ansvar, han med så lätt hjärta åtagit sig, tyktes nu tynga ned honom
ända till jorden. Om denna konsert misslyckades, förtjänade han de
förebråelser, med hvilka Margot en gång öfverhopat honom; ja, han
förtjänade nästan, att hon helt och hållet undandrog honom sitt
förtroende.
— Jag kan icke upptäcka en kristen själ som jag känner, sade hon,
men det kommer väl snart mera folk. Jag hoppas det för fröken
Kostolitz skull.
— Ack, jag önskar, att här vore ett dussin sådana som ni, suckade
sir John innerligt. De fyra systrarna pladdrade vidare skrattande och
smickrade, och sir John blickade tankspridt bort mot närmaste dörr.
Ah! Där kom lady Mary åtföljd af en undersätsig dam med tre
döttrar, hvilka allesamman tydligt buro prägeln "landskusiner". Han
hälsade hennes inträde med riktig hänförelse.
— Min käre gosse, du trodde väl aldrig, att jag skulle drifva dem
framför mig som en skock gäss? Dessutom fick jag inte ihop så
många. Jag fick endast tag på ett par till. De flesta af mina bekanta
ha lämnat staden och jag var så upptagen i går —
— Du har således icke hållit ditt löfte, afbröt hennes nevö henne
ock vände sig hastigt ifrån henne.
Då han återigen såg sig omkring tykte han, att salen icke mera var
så tom; nej, det var värkligen en hel hop människor där, troligtvis en
hop släktingar till Margots elever — han tykte sig bland dem
upptäcka flere af den skolflickstyp, Valérie beskrifvit för honom. Ja,
då blef behållningen från konserten visserligen icke särdeles stor.
Men ingen kunde åtminstone påstå, att salen varit tom och allra
minst så tom att det kunde nedslå Valéries mod. Om bara dessa
fasansfulla platser, som han var ansvarig för, ville fylla sig! Det
föreföll hans upprörda sinne som om de tomma stolraderna hånfullt
grinade emot honom; om de ej blefvo fylda, skulle de genast falla
Valérie i ögonen, då hon trädde fram på estraden.
— Ja, det är mycket vänligt af er, instämde sir John helt ängslig till
mods. Men har ni ej varit i stånd att —
— Jag har förmått ett par personer att lofva komma hit, men jag
vet värkligen icke, om man kan vänta dem i detta förskräckliga
väder. Jag vet åtminstone, att jag inte hade gått ut i dag, ifall jag
kunnat undvika det. Nå, hvar skall jag taga plats — i främsta raden?
Jag har värkligen fullt upp med platser att välja på, ty de komma
bestämdt att stå tomma. — Hon var vid dåligt lynne och såg äfven
så ut; hon hade värkligen bjudit till att uppfylla sir Johns bön, och
det var icke hennes fel, att människorna icke ville gå ut i ett dylikt
Herrans väder; han behöfde väl icke därför se så ömklig och
besviken ut.
Hon gick vidare, halft om halft väntande, att han skulle följa med
henne; men han återvände till sin plats, ty han hade småningom
gripits af en nästan komisk förtviflan — komisk, då man betänker
orsaken därtill. Ack, dessa framplatser! De voro icke till hälften —
icke till en fjärdedel upptagna. Sir John stirrade på dem, tils de flöto
ihop och började dansa omkring för hans ögon. Sedan kom en sakta
rörelse honom att se upp: Valérie stod på estraden. Han märkte att
hon såg sig omkring och att hon tyktes bli likasom förbluffad. Hon
var mycket blek; hennes med så mycken omsorg valda hvita
klädning tyktes blott göra henne blekare; hennes ansikte såg i den
skarpa belysningen nästan tärdt ut. Det föreföll honom som hon icke
ens sett bra ut. Hon började med en sonat af Grieg, som var mycket
svår ätt spela, och om hon nu värkligen var nervös och icke i
stämning eller om Crofts förvirrade fantasi bedrog honom, nog af,
hon hade icke hunnit långt, innan han måste tillstå för sig själf, att
hon ej spelade såsom hon brukade. Det föreföll honom som om
hennes spel aldrig varit så uttryckslöst, ja, han tykte till och med, att
hon ett par gånger spelade orent. Det första stycket lämnade
åtminstone publiken oberörd; den skänkte henne blott vid slutet en
medelmåttig applåd, fastän sir John klappade, så ätt händerna
svedo, och lady Mary, som satt på första stolraden, kraftigt
bearbetade golfvet med sitt paraply. Crofts sinnesstämning blef, om
möjligt, ännu värre än förut. Det berodde så mycket på början både
för Valérie och för åhörarna, och början hade icke varit
uppmuntrande. Den spelande och publiken voro icke i kontakt med
hvarandra; och då han kände det, huru mycket djupare skulle icke
Valérie då vara berörd däraf. Hans blick gled från henne till Margot
och hvilade full af förvåning och förtjusning på henne. Om den ena
systern ej förmått göra sig gällande, såg den andra däremot så
mycket bättre ut. Hennes kinder glödde, hennes ögon blixtrade. Han
såg på hennes ansiktsuttryck, att hon väpnat sig till denna pröfning
och ansträngde hvarje nerv för att utplåna Valéries fel och brister.
Det föreföll honom nu som hon varit den större af de båda
konstnärinnorna. Han hade aldrig förut hört henne spela så bra —
med en sådan styrka och aplomb och tillika med så mycken känsla
och behag. Ehuru sir John varit mycket trög i sina musikaliska
studier och troligtvis alldeles hade försummat dem, ifall han ej
händelsevis sammanträffat med fröknarna Kostolitz, hyste han likväl
en varm kärlek till musiken. Som han dessutom var mäktig djupt
deltagande och erkännande, hälsade han Margots spel med värkligt
konstnärlig förtjusning.
Medan Valérie blek och alt mera modstulen stod inför den
besvikna publiken och Margot gjorde alt hvad hon kunde af det
svåra ackompagnementet, satt sir John blott och smålog för sig själf
och drömde. Kanske det vore riktigare att säga, det han plötsligt
vaknade. Han hade i veckotal gått som i en dröm, men nu hade
hans ögon slutligen blifvit öppnade. Det af ljufhet fylda dunklet var
försvunnet och nu var hans själ uppfyld af ett ännu ljufvare, mera
strålande dagsljus. L'esprit du reveil hade kommit öfver honom. Han
kände nu betydelsen af det otydliga, ofattliga hopp och den glädje,
som åtföljt hans dröm. Om natten hade han känt, att de voro i hans
närhet, och han hade fruktlöst sträkt ut händerna efter dem. Nu
kunde han i det klara dagsljuset se och gripa värkligheten. Han
älskade Margot Kostolitz och ville göra henne till sin hustru!
Hvad det måste vara ljuft att fatta dessa små, flitiga händer och
be dem hvila ut i hans, att säga henne, det fattigdom, bekymmer
ock svikna förhoppningar nu lågo bakom henne, att hon icke mera
behöfde kämpa och umbära! Hvad det måtte vara förtjusande att
ösa öfver henne alt hvad en stor rikedom kan förskaffa! Sir John var
visst icke penningedryg, men han erfor likväl en liflig tillfredsställelse
vid tanken på sin ställning, sin börd, sina vidsträkta besittningar, nu,
då Margot skulle dela alt med honom. Då han tänkte på alt hvad han
skulle göra för henne och förestälde sig hennes öfverraskning,
hennes blyga, vantrogna glädje, uppfyldes hans egen själ af en
förtjusning, som liknade ett rus.
Nå, men så presterade ni desto mera. Jag har aldrig hört er spela
så bra som i dag!
Vid orden "hela rader med tomma platser" hade sir John åter
plötsligt kommit ned till jorden och såg nu alldeles förstörd och
förvirrad ut. Men han var nog feg att genast instämma i
hänsyftningen på det fula vädret.
— Ja, det är en afskyvärd dag. Jag är öfvertygad om, att här varit
fullt med folk, om det varit vackrare väder. Men det är väl bäst, att
jag skaffar er en vagn? Jag tror visst, att regnet fortfar, och I ären
säkerligen båda bra trötta. Men får jag inte först tala ett ord med er
syster?
— Jag tror det är bäst, att ni låter bli, svarade Margot. Valéries
rygg såg afgjordt afböjande ut. Han dröjde ännu ett ögonblick och
sade:
— Vet ni, hennes framgång var värkligen icke så liten som ni tror.
Det var flere personer i mitt grannskap, som applåderade alldeles
entusiastiskt.
Men Margot afbröt honom med en bitter åtbörd, för hvilken han
tog till flykten.
— Så mycket ger jag för er idé! ropade hon i vredesmod. Det var
ett fullständigt fiasko och det är ni skuld till!
Han blef så förbluffad öfver detta plötsliga angrepp, att han tog
emot det med absolut tystnad. Men en välbekant röst bakom honom
tog genast och högst energiskt hans försvar och lady Mary Bracken
trängde sig hastigt framåt.
— Hvad säger hon där? Nå, det är då värkligen för mycket. Den
stackars gossen har ansträngt sig till det yttersta. Hvar är hon? Hvar
är fröken Kostolitz? Det är så mörkt, när man kommer ut. Ah, där är
ni ju! Huru står det till? frågade hon och sträkte öfver nevöns axel
ett par knotiga fingrar in i vagnen. — Men jag vet då alldeles säkert,
att ni ej har någonting att förebrå sir John; han har gjort alt hvad i
hans förmåga stått för att prångla ut biljetter åt er. Jag kan försäkra
er, att han skickat mig hela tjugu stycken och att han äfven plågat
alla mina bekanta därmed.
— Pitt Street, tjuguåtta! ropade sir John till kusken, som redan
helt otåligt tittade fram undan sin oljedukshatt. — Drag dig nu
undan, bästa tant — annars blir du öfverkörd!
Valérie skulle bestämdt aldrig förlåta honom. Men det var också
för mycket. Han hade behandlat dem som ett par barn, han hade
bedragit — visserligen i bästa afsikt — men han hade ändå bedragit
dem. Han var god och ädelmodig och hade velat hjälpa dem, men —
det var i alla fall för grymt. Hon besvarade Valéries lidelsefulla
anklagelser tankspridt och med ett par tröstande ord, men det gick
omkring i hennes hufvud. Och det var ju äfven ur ekonomisk
synpunkt en riktig olycka! De måste naturligtvis ersätta sir John alt
hvad han gifvit ut — det var outhärdligt, att han ur sin egen ficka
velat hålla dem skadeslösa för den förlust, de annars hade lidit. De
hade ännu icke sjunkit så djupt, att de ville taga emot pengar af
honom; de skulle genast ersätta honom, ehuru alla Margots
besparingar skulle gå åt därtill. Ja, till följd af detta misslyckade
vågstycke skulle de råka i en vida sämre belägenhet än förut. De
hade förlorat sina pengar och sin prestige — och ack! hade de ej
gjort en ännu större förlust — huru gick det nu med deras
förtroende till den vän, som bedragit dem? Margot tillbragte natten
under en feberaktig oro; hon längtade efter dagen, efter det
ögonblick, då hon kunde vältra ifrån sig åtminstone en del af den
börda, som nedtrykte henne. Hon skulle vid vanlig tid på
förmiddagen träffa sir John hos hans kusiner; då skulle hon förebrå
honom det svek han tillåtit sig gentemot dem samt noga taga reda
på, huru mycket han gifvit ut för dem. Hon tykte, att hon ej kunde
andas, förrän hon blifvit befriad från denna skuldbörda. Om de
gamla damerna blott vore ur vägen — om hon blott kunde räkna på
att fem minuter få vara ensam med honom — hvad skulle hon taga
sig till, om hon ej blef i tillfälle att befria sig från denna
förödmjukelsens börda?
— Sir John, sade hon med darrande röst, det fägnar mig, att jag
blir i tillfälle att tala med er.
Hon tystnade; det var så svårt att komma fram med det hon hade
på hjärtat, medan dessa glada, strålande ögon hvilade på henne.
— Jag ville också gärna tala med er, svarade han, och bad därför
mina kusiner lämna oss ensamma några ögonblick. De vänliga
själarna tro, att vi ha konsertangelägenheterna att tala om, och ha
därför lofvat att icke störa oss.
— Ja! Kan ni väl ett ögonblick föreställa er, att jag skulle vara
annat än sårad och förödmjukad, då jag tänker på, huru ni handlat
gentemot Valérie och mig?
— Och antag, att jag gjorde det, sade John mycket vekt och
fattade plötsligt hennes hand. Antag, att jag gjorde det, Margot;
hvad betyder det väl? Då jag vill ge er alt hvad jag eger och mig själf
med. Min älskade, jag är visst icke värdig att bli er make, men jag
ber, att ni ändå tager mig.
Om hon förut varit blek, så blef hon nu askgrå. Han trodde ett
ögonblick, att hon skulle svimma. Hon sträkte ut vänstra handen och
försökte gripa tag i kaminkransen; hon hade äfven användt högra
handen därtill, men han höll den alt för stadigt sluten i sin.
— Jag öfverraskade er, fortfor han ifrigt. Jag tror, att jag själf är
öfverraskad. Jag vet inte, huru det kom sig. Men, Margot, vi borde ju
ha kunnat gissa det! Vi ha under alla dessa veckor kommit alt
närmare och närmare hvarandra och nu är den tid inne, då vi ej
kunna reda oss utan hvarandra. Jag vet åtminstone, att jag ej kan
lefva utan er, och, min älskade, jag tror, att det är på samma sätt
med er. Men huru förfärad ni ser ut? Är den tanken, att jag älskar er,
så förskräcklig för er, Margot? och vill ni inte vara uppriktig och
tillstå, att ni likaledes älskar mig, ty jag är fullt och fast öfvertygad
om, att ni gör det.
— Ack nej, ropade hon; nej, nej — vi äro tokiga! Det vore alldeles
omöjligt!
— Om vi äro tokiga, sade han, så är det härligt att vara tokig. Jag
för min del önskar aldrig mera bli förnuftig. Min lilla Margot, ni har
haft ett så tungt och sorgligt lif, att ni tycker det måste vara en
vansinnig dröm att vara lycklig; men vi skola det oaktadt bli lyckliga
tillsamman, ni, Margot — ni och jag. Tror ni ej, att jag skulle kunna
göra er lycklig, min älskling?
Han lutade sig ned öfver henne och drog med största ömhet bort
hennes händer från ansiktet; trollmakten i hans blick fängslade
henne.
Hans glöd smittade henne; han läste i hennes ögon, att hon blott
älskade honom alt för innerligt, ögonblicket därpå måste hon uttala
de ord, han längtade att få höra. Men hon gjorde plötsligt våld på sig
och trängde orden tillbaka. Hon satte sig till rätta i stolen, drog bort
hans händer och sade så bestämdt hon någonsin kunde:
— Sir John, jag kan ej bli er hustru. Det är så likt er att glömma
alt, som gör en förbindelse oss emellan omöjlig; men jag tänker på
det.
En lätt rodnad färgade Margots bleka kinder. — Jag vet, att jag
icke är er jämlike, sade hon stolt. Men jag ämnade icke säga ett ord
därom, ehuru jag tror, att många människor skulle anse våra olika
lefnadsställningar för ett oöfverstigligt hinder. Och om det också ej
fans något annat, skulle jag för min del anse det ohederligt att tillåta
er för min skull taga ett så oöfverlagdt steg. Ett steg, som ni
måhända sedermera skulle komma att ångra.
— Jag har inte glömt Valérie, sade Croft allvarsamt. Jag tror ni kan
lita på, att jag skulle bli en god bror åt henne. Hon skall vistas hos
oss tils hon gifter sig, hvilket torde bli snart nog, tillade han leende.
Han höll af Valérie och intresserade sig på ett broderligt sätt för
hennes framtid. Men det måste icke desto mindre vara härligt, att en
gång ensam få rå om Margot och Margots skarpa öra upptäkte en
skymt af denna längtan i hans ord. Därför sade hon bestämdt och till
och med en smula bittert:
— Ack, sade Margot och blickade hastigt genom tårar upp till
honom, ty hon kunde ej uthärda att höra honom tala i denna ton.
Ack, var inte ond! Nej, det är värkligen icke så. Jag gör det, emedan
jag fruktar, emedan jag vet —
Hon tystnade plötsligt. Sir John anade hvilken bekännelse det var,
som darrade på hennes läppar, och hans ansikte antog ett mildare
uttryck — men för öfrigt förrådde han ej sin sinnesrörelse, utan
fortfor lugnt och bestämdt:
— Jag tycker, att ni onödigtvis oroar er. Det är ju icke sagdt, att
våra viljor behöfva stöta ihop.
Sir John började skratta och tvekade ett ögonblick, innan han
svarade; sedan sade han på det öppna, okonstlade sätt, hon alltid
tykt så mycket om:
— Margot, det finnes många karlar, som utan tvifvel skulle lofva
alt möjligt för att ernå det de önska, men jag — jag är ju i många
afseenden icke värd synnerligen mycket, men uppriktig är jag! Och
därför säger jag nu också öppet, att jag icke gärna såg, att ni
spelade offentligt, sedan ni blifvit min hustru.
Trots hans halft skämtsamma ton kände Margot likväl, att det var
ett fast beslut, som låg till grund för hans ord, och hon viste, att om
han också älskade henne huru varmt och innerligt, så fans det likväl
många punkter, i hvilka han icke skulle gifva efter för henne. Hon
hade under den tid de varit bekanta så ofta varit den, som haft
ledningen, och hade varit så van att utöfva inflytande på honom, att
upptäkten af denna nya sida i hans karaktär nästan var ett litet slag
för henne. Och det lät nästan som hon varit stucken, då hon
svarade:
— Margot, ni skall icke leka med mig. Jag uppskattar er kärlek till
Valérie och skulle aldrig försöka minska den. Jag tror, att ni känner
mig tillräckligt för att veta det. Som min hustru kunde ni göra mera
för Valérie än någonsin förut. Men systerlig tillgifvenhet och kärleken
mellan man och hustru äro två olika saker. Om ni älskar mig såsom
jag er, måste jag komma i första rummet. — Ack, nej! utropade
Margot hastigt, förskräkt öfver medvetandet om sin svaghet och
hans växande inflytande öfver henne. Nej, nej, det går icke för sig!
Valérie måste komma i främsta rummet! Hon har alltid varit den
första!
— Kanske ni har rätt, Margot, och att det är bättre att vi skiljas, ty
jag vill inte nöja mig med andra platsen. Därtill älskar jag er för
innerligt.
Han dröjde ännu och betraktade henne som om han velat låta
henne få tid på sig att försöka få fram ett ord; men hon bet ihop
tänderna och såg på honom med en stolt och stadig blick. Hon hade
icke ens i det ögonblick, då hon tyktes vilja gifva efter, synts honom
så skön och så tjusande som nu, då han skulle förlora henne. Hans
ansiktsuttryck förändrades.
Hans ord läto nästan som ett ångestrop och de genljödo i hennes
hjärta, men hon svarade blott med fasthet:
Han gaf till ett kort och bittert skratt och gick utan ett ord vidare
bort mot dörren.