Убедитесь, что вы не закрываете базу данных. Используя db_close () перед запуском вашего запроса:
blockquote>Если вы используете несколько запросов в скрипте, даже если вы включая другие страницы, содержащие запросы или соединение с базой данных, возможно, что в любом месте вы будете использовать db_close (), который закроет ваше соединение с базой данных, поэтому убедитесь, что вы не делаете эту ошибку в своих сценариях.
Если вам нужно извлечь первую (или nth
) запись из каждого разделения, используйте:
word <- c('apple-orange-strawberry','chocolate')
sapply(strsplit(word,"-"), `[`, 1)
#[1] "apple" "chocolate"
Или быстрее и более эксплицитно:
vapply(strsplit(word,"-"), `[`, 1, FUN.VALUE=character(1))
#[1] "apple" "chocolate"
Оба бит кода хорошо справится с выбором какого-либо значения в списке split и будет обрабатывать случаи, выходящие за пределы диапазона:
vapply(strsplit(word,"-"), `[`, 2, FUN.VALUE=character(1))
#[1] "orange" NA
Например,
word <- 'apple-orange-strawberry'
strsplit(word, "-")[[1]][1]
[1] "apple"
или, что эквивалентно
unlist(strsplit(word, "-"))[1].
По сути, идея состоит в том, что split
дает список в результате, к элементам которого нужно обращаться либо (в последнем случае) или путем исключения (последний).
Если вы хотите применить метод ко всему столбцу:
first.word <- function(my.string){
unlist(strsplit(my.string, "-"))[1]
}
words <- c('apple-orange-strawberry', 'orange-juice')
R: sapply(words, first.word)
apple-orange-strawberry orange-juice
"apple" "orange"
Вместо этого я использовал бы sub()
. Поскольку вам нужно первое «слово» перед расколом, мы можем просто удалить все после первого -
, и это то, с чем мы остались.
sub("-.*", "", people$food)
Вот пример -
x <- c("apple", "banana-raspberry-cherry", "orange-berry", "tomato-apple")
sub("-.*", "", x)
# [1] "apple" "banana" "orange" "tomato"
В противном случае, если вы хотите использовать strsplit()
, вы можете округлить первые элементы с помощью vapply()
vapply(strsplit(x, "-", fixed = TRUE), "[", "", 1)
# [1] "apple" "banana" "orange" "tomato"
Я бы предложил использовать head
, а не [
в R.
word <- c('apple-orange-strawberry','chocolate')
sapply(strsplit(word, "-"), head, 1)
# [1] "apple" "chocolate"