Основное решение R, функция findInterval
выполняет основную часть. Затем умножьте результат на df
и получите среднее значение строки.
t1 <- c(1, 2, 4, 6, 7, 9)
t2 <- c(6, 6, 5, 3, 3, 7)
df <- data.frame(t1 = t1, t2=t2, stringsAsFactors = FALSE)
cp <- c(-Inf, 5, 8, Inf)
Редактировать.
Если веса нормированы на сумму 1
, то правильным ответом будет любой из следующих двух.
wt <- sapply(df, findInterval, cp)
rowSums(df*(wt/apply(wt, 1, sum)))
#[1] 4.333333 4.666667 4.666667 5.000000 5.666667 8.200000
sapply(1:nrow(df), function(i)
weighted.mean(df[i,], sapply(df, findInterval, cp)[i,]))
#[1] 4.333333 4.666667 4.666667 5.000000 5.666667 8.200000
Эти результаты теперь равны результатам в других ответах.
Перенесите свою базу данных, обрабатывающую код в "использовании"
using (SqlConnection conn = new SqlConnection (...))
{
// Whatever happens in here, the connection is
// disposed of (closed) at the end.
}
.Net Framework поддерживает пул соединения по причине. Доверяйте ему!:) Вы не должны писать так много кода только, чтобы соединиться с базой данных и выпустить соединение.
можно просто использовать оператор 'использования' и пребывать в уверенности это 'IDBConnection. Выпуск ()' закроет соединение для Вас.
Очень тщательно продуманные 'решения' имеют тенденцию приводить к содержащему ошибки коду. Простой лучше.
Я предполагаю это "_SqlConnection. Состояние == ConnectionState. Закрытый" Вы имели в виду! =.
Это будет, конечно, работать. Я думаю, что это более обычно для содержания самого объекта соединения в операторе использования, но что Вы имеете, хорошо, если Вы хотите снова использовать тот же объект соединения по некоторым причинам.
Одной вещью, которую необходимо определенно изменить, тем не менее, является Расположение () метод. Вы не должны ссылаться на объект соединения в, располагают, потому что он, возможно, был уже завершен в той точке. Необходимо следовать, рекомендуемые Располагают шаблон вместо этого.
Документы MSDN делают это довольно ясным...
Вы, вероятно, не имеете (и не хотят к), отключают организацию пула подключений, таким образом, пул в конечном счете управляет состоянием соединения после вызова "Близко". Это могло быть важно, поскольку Вы можете быть смущены, смотря со стороны сервера базы данных при всех открытых соединениях.
<час>Итак, почему тестирование беспокойства на Закрытый? Просто звоните Близко ().
<час>Поэтому использование блок приводит к закрытому соединению. использование вызовы Располагают для Вас.
<час>Важная мера предосторожности. Спасибо, Egon.
Так как Вы используете IDisposables так или иначе. Можно использовать ключевое слово 'использования', которое в основном эквивалентно вызову, располагают в наконец блок, но это выглядит лучше.
Посмотрите этот вопрос для ответа:
Близкий и Располагают - чтобы звонить?
, Если Ваше время жизни соединения является вызовом отдельного метода, используйте using
функция языка для обеспечения надлежащей очистки соединения. В то время как try/finally
блок является функционально тем же, требуется больше кода, и IMO менее читаем. Нет никакой потребности проверить состояние соединения, можно звонить Dispose
невнимательный, и оно обработает чистку соединения.
, Если Ваше время жизни соединения соответствует времени жизни содержания класса, то реализуйте IDisposable
и очистка соединение в Dispose
.
никакая потребность в попытке.. наконец вокруг "использования", использование попытка.. наконец
Мог бы я предлагать это:
class SqlOpener : IDisposable
{
SqlConnection _connection;
public SqlOpener(SqlConnection connection)
{
_connection = connection;
_connection.Open();
}
void IDisposable.Dispose()
{
_connection.Close();
}
}
public class SomeDataClass : IDisposable
{
private SqlConnection _conn;
//constructors and methods
private void DoSomethingWithTheSqlConnection()
{
//some code excluded for brevity
using (SqlCommand cmd = new SqlCommand("some sql query", _conn))
using(new SqlOpener(_conn))
{
int countOfSomething = Convert.ToInt32(cmd.ExecuteScalar());
}
//some code excluded for brevity
}
public void Dispose()
{
_conn.Dispose();
}
}
Hope, которая помогает :)
Вставьте соединение, близко кодируют "Наконец" блок как Вы шоу. Наконец блоки выполняются, прежде чем исключение выдается. Используя "использование" кладка блоков точно также, но я нахожу явное "Наконец" методом более ясный.
Используя операторы старая шляпа многим разработчикам, но младшие разработчики не могли бы знать это от руки.