Новое в 2014 году:
Особенно, если вы также заинтересованы в манипулировании данными в целом (включая сортировку, фильтрацию, подмножество, подведение итогов и т. д.), вам обязательно нужно взглянуть на dplyr
, который поставляется с множеством функций, которые предназначены для облегчения вашей работы с кадрами данных и некоторыми другими типами баз данных. Он даже предлагает довольно сложный SQL-интерфейс и даже функцию для преобразования (большинства) SQL-кода непосредственно в R.
. Четыре функции, связанные с соединением в пакете dplyr, (цитата):
inner_join(x, y, by = NULL, copy = FALSE, ...)
: вернуть все строки из x, где в y есть соответствующие значения, а все столбцы из x и y left_join(x, y, by = NULL, copy = FALSE, ...)
: вернуть все строки из x и все столбцы от x и y semi_join(x, y, by = NULL, copy = FALSE, ...)
: вернуть все строки из x, где в y есть соответствующие значения, сохраняя только столбцы из x. anti_join(x, y, by = NULL, copy = FALSE, ...)
: вернуть все строки из x, где в y нет совпадающих значений, сохраняя только столбцы из x Здесь все здесь
Выбор столбцов может выполняться с помощью select(df,"column")
. Если для вас недостаточно SQL-ish, то есть функция sql()
, в которую вы можете ввести код SQL как есть, и он будет выполнять указанную вами операцию так же, как вы писали в R все время (для получения дополнительной информации , обратитесь к dplyr / database vignette ). Например, если применить правильно, sql("SELECT * FROM hflights")
выберет все столбцы из таблицы dplyr «hflights» («tbl»).
Я предполагаю, что вы должны нажимать эти кнопки последовательно.
Создайте 2 логические переменные в вашем ViewController и 2 метода IBAction, по одной для каждой кнопки. Когда кнопка A или B нажата, установите для соответствующего логического значения значение true. Когда вторая кнопка (A или B) нажата, проверьте, является ли булева переменная другой кнопки истинной. Если да, запустите переход программно.
Вы можете создать этот переход между двумя контроллерами представления в раскадровке. Не забудьте дать segue подходящее имя.
Вот пример кода.
class MyViewController: UIViewController {
var buttonAIsTapped: Bool = false
var buttonBIsTapped: Bool = false
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func buttonATapped(_ sender: UIButton) {
buttonAIsTapped = true
if buttonBIsTapped == true {
self.performSegue(withIdentifier: "SegueName", sender: self)
}
@IBAction func buttonBTapped(_ sender: UIButton) {
buttonBIsTapped = true
if buttonAIsTapped == true {
self.performSegue(withIdentifier: "SegueName", sender: self)
}
}