Похоже, у меня было две ошибки. Во-первых, как указывалось, мой цикл for был неверным и не зацикливался на количестве символов, как хотелось бы. Заменив «for (i в длине строки)» на «for (i в seq_len (длина строки))» исправил это.
Во-вторых, строка «files < - c (files, filename [i])» заставляет цикл добавлять новые записи в уже существующие NA, вместо того, чтобы просто указывать нужный вектор имен файлов. Замена с соответствующим индексированием с использованием «files [i] < - filename [i]» исправляет это.
mystring <- "ABcd"
# count number of characters
stringlength <- nchar(mystring)
# find filename for image corresponding to symbol
filepath <- "/Users/mypath"
# initialize vectors
filename <- rep("NA", stringlength)
files <- rep("NA", stringlength)
symbol <- rep("NA", stringlength)
prefix <- "NA"
# create filename prefix from letters in mystring - caps are single and lowercase are double
for (i in seq_len(stringlength))
{
symbol[i] <- substring(mystring, i, i)
if (symbol[i] %in% letters) {
prefix <- paste(symbol[i], symbol[i], sep = "")
} else {
prefix <- symbol[i]
}
filename[i] <- paste(filepath, "/", prefix, ".txt", sep="")
files[i] <- filename[i]
}
files
1] "/Users/mypath/A.txt" "/Users/mypath/B.txt" "/Users/mypath/cc.txt" "/Users/mypath/dd.txt"
Вам не нужно соединение с базой данных для заполнения DataSet. Можно дразнить его как это:
IDataInterface di = new Mock<IDataInterface>();
DataSet mockDataSet = CreateMockDataSet();
di.Expect(x => x.Get()).Returns(mockDataSet);
something.UseDataInterface(di.Object);
Заполнение ложного DataSet является довольно болезненным, все же. Если я делаю это, я обычно помещал интерфейс фасада перед возвращенным DataSet, который легче дразнить. Или я изменяю код для использования DataTable, который легче заполнить.
С другой стороны, используйте встроенную базу данных, такую как SQLite или SQL Server CE, для Ваших модульных тестов.