Поэтому я попытался создать набор данных и использовать dplyr для создания решения. Рекомендуется включать метод создания выборочного набора данных, поэтому, пожалуйста, сделайте это в будущих вопросах.
# load required library
library(dplyr)
# generate data set of all site, well, and month combinations
## define valid values
sites = letters[1:3]
wells = 1:5
months = month.name
## perform a series of merges
full_sites_wells_months_set <-
merge(sites, wells) %>%
dplyr::rename(sites = x, wells = y) %>% # this line and the prior could be replaced on your system with initial_tibble %>% dplyr::select(sites, wells) %>% unique()
merge(months) %>%
dplyr::rename(months = y) %>%
dplyr::arrange(sites, wells)
# create sample initial_tibble
## define fraction of records to simulate missing months
data_availability <- 0.8
initial_tibble <-
full_sites_wells_months_set %>%
dplyr::sample_frac(data_availability) %>%
dplyr::mutate(values = runif(nrow(full_sites_wells_months_set)*data_availability)) # generate random groundwater values
# generate final result by joining full expected set of sites, wells, and months to actual data, then group by sites and wells and perform lag subtraction
final_tibble <-
full_sites_wells_months_set %>%
dplyr::left_join(initial_tibble) %>%
dplyr::group_by(sites, wells) %>%
dplyr::mutate(trailing_difference_6_months = values - dplyr::lag(values, 6L))
Самый простой способ, который я нашел, - это извлечь Tock.aiff (звук клавиатуры) из симулятора iPhone и упаковать его в свое приложение, а затем воспроизвести его с помощью AudioServicesPlaySystemSound ()
в соответствующее время. На моей машине простой ввод Tock.aiff в Spotlight приводит к включению файла, но если вам нужно его искать, он находится в симуляционной версии UIKit.framework.
Насколько я могу судить, звук щелчка недоступен для приложений. Я не видел ничего в сервисах аудио сессий, которые имеют отношение AudioServicesPlaySystemSound ()
выглядит многообещающе, но, похоже, не существует идентификатора системного звука для звука щелчка (более внимательный взгляд на заголовки может что-то вызвать). Вы всегда можете зациклить вызов к AudioServicesPlaySystemSound (i)
и посмотреть, что-нибудь играет. Изображения восстановления программного обеспечения iPhone, вероятно, имеют звук, но, вероятно, не лицензированы для общего использования. Не нужно упоминать о джейлбрейке iPhone, чтобы получить приятный звук щелчка.
Для звуков (креативного достояния) ознакомьтесь с Freesound Project .
На будущее
Нет необходимости копировать файл в собственное приложение - вы сможете получить его прямо из инфраструктуры UIKit:
CFURLRef soundFileURLRef = CFBundleCopyResourceURL(
CFBundleGetBundleWithIdentifier(CFSTR("com.apple.UIKit")),
CFSTR ("Tock"),CFSTR ("aiff"),NULL);
Это то, что я сделал из этого комментарий aSquared:
NSString *path = [[NSBundle bundleWithIdentifier:@"com.apple.UIKit"] pathForResource:@"Tock" ofType:@"aiff"];
SystemSoundID soundID;
AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path], &soundID);
AudioServicesPlaySystemSound(soundID);
AudioServicesDisposeSystemSoundID(soundID);
Использование 0x450 в качестве SystemSoundID у меня работает (и при правильной громкости - просто воспроизведение встроенного Tock.aiff было слишком громким). Понятия не имею, насколько это портативно - это на iPod Touch 3-го поколения.
По-прежнему не уважает предпочтение включения / выключения галочки.
Возможно, немного поздно ...
Но в последнем сообщении MrMage, если вы сделаете AudioServicesDisposeSystemSoundID (soundID);
сразу после AudioServicesPlaySystemSound (soundID);
, тогда вы ничего не услышите, так как отбрасываете системный звук сразу после его создания.
Сначала нужно дать ему закончить воспроизведение .. Вызовите только AudioServicesDisposeSystemSoundID, чтобы отменить звук до его завершения