Решением является использование dplyr::pull
в списке-столбце (obj$data
):
library(tidyverse)
obj%>%
pull(data)%>%
map(~summarise_if(.,is.numeric,sum))
[[1]]
# A tibble: 1 x 6
V1 V2 V3 V4 V5 V6
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 12865. 11787. 12864. 13443. 12548. 13170.
[[2]]
# A tibble: 1 x 6
V1 V2 V3 V4 V5 V6
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 11655. 12197. 11379. 10023. 10659. 11154.
[[3]]
# A tibble: 1 x 6
V1 V2 V3 V4 V5 V6
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 5175. 6053. 6855. 6130. 6504. 5967.
Вам даже не нужно если оператор. Можно создать блоки с {}
, Который должен, вероятно, быть отдельной функцией как бы то ни было.
Пример здесь:
#include <stdio.h>
int
main(int argc, char **argv) {
int i = 0;
{
int i = 10;
printf("%d\n", i);
}
printf("%d\n", i);
}
По-видимому, я нахожусь в меньшинстве, но я нахожу "просто, что фигурные скобки" намного тяжелее читают, потому что оно отклоняется от обычного шаблона. В (по общему признанию нечастых) случаях, где я хочу ограниченный по объему блок, не определяя другую функцию, я предпочитаю включать "если", но без любых макросов и с комментарием для объяснения почему:
if( 1 ) // just to establish scope
{
// do stuff here
}
Предположение, что Вы используете старый компилятор (как я делаю, это для старых аппаратных средств), что Вы пропускаете, если (TRUE) как другие предложили, и что у Вас есть ДЕЙСТВИТЕЛЬНО ОГРОМНАЯ функция (ведьма, которую Вы не должны иметь во-первых), затем я думаю, что это - вид хорошо. Я сделал это, но это не чувствовало себя хорошо...
Я думаю, что Вы работаете с некоторыми устаревшими предположениями. Я кодировал прямой C, использующий GCC в течение нескольких месяцев теперь, и Вы не должны объявлять переменные в начале блока, даже при том, что Второй выпуск K& R говорит, что Вы имеете к. Можно объявить переменную где угодно, как подобный этот not-very-useful пример:
char* palstring;
palstring = malloc(LARGEST_STRING);
memset(palstring, 0, sizeof palstring);
fgets(palstring, LARGEST_STRING, fin);
char* cur = palstring;
char letter;
letter = *cur;
, Таким образом, нет никакой потребности сделать то, что Вы предлагаете. Язык шел дальше.
Другое хорошее дополнение к языку C является Массивами Переменной длины, которые позволяют Вам передавать массив функции наряду с ее размером. В былые времена все, что Вы могли сделать, было передать в указателе.
C99 позволяет Вам объявлять переменные почти где угодно. Однако рефрен от выполнения его без очень серьезного основания. Попытайтесь сначала разделить свою функцию на меньший (возможно встроенный) функции.
единственное место, где такая вещь могла бы иметь смысл, - когда у Вас есть переменная, которая инициализируется посреди Вашей функции, например, подобная созданию объекта в C++.
Просто определите свои переменные в начале блока или используйте другую функцию. Добавление искусственного объема с пустым {} s или любая из альтернатив не является хорошей практикой.
Мой ответ следующие:
Это заставляет закаленных программистов съежиться при самой мысли о нем.
Я не думаю, что Вам нужно если (истинная) часть.
Просто {} требуются, чтобы определять объем переменных.
Отъезд двери открывается для некоторых творческих людей:
#define TRUE 0
#define FALSE 1
Просто используют фигурные скобки для объявления объема.
Как столько ответов, уже сказанных, Вам не нужно "если" материал. Просто создайте пустой блок. Но я хочу достигнуть другую точку. В C можно создать объявления переменной где угодно в блоке, не только в запуске. В C89 у Вас было то ограничение. Запуск с C99 (это составляет 10 лет теперь), у Вас больше нет того ограничения, хотя некоторые компиляторы будут стонать так или иначе. GCC не будет, тем не менее, если Вы скажете ему использовать самый "недавний" Стандарт C с-std=c99 опцией.
, поскольку существуют все еще существующие компиляторы, которые стонут по умолчанию, я не предпочел бы смешивать объявления и код все же. Я продолжал бы помещать объявления в начале блоков по причинам совместимости.
Можно ли удалить
if(TRUE)
и просто оставить ли фигурные скобки, которые собой определяют новый синтаксический блок - составной оператор .
, Это - определенно инструмент для очистки, чем ложь, если бы Вы имели прежде, но Вы все еще хотели бы спрашивать себя, почему Вы хотите создать новый блок то - было бы лучше определить подпрограмму?
В первую очередь, новый блок не должен быть если блок. Это мог просто быть раздел кода, окруженного фигурными скобками, как это:
void foo() {
... Do some stuff ...
{
char a;
int b;
... Do some more stuff ...
}
... Do even more stuff ...
}
112-секундный из всех, в любом современном компиляторе C, который соответствует стандарту C (я думаю C99), можно объявить переменные где угодно в блоке, таким образом, Вы не должны создавать новый блок вообще.
Обратите внимание, что в C99 позволяется объявить локальные переменные посреди блоков.
C99 является версией стандарта C с 1999 года; самые современные компиляторы C поддерживают его.
Так как можно просто сделать блок объема без, если, это - лучшая идея.
void foo() {
... Do some stuff ...
{
char a;
int b;
... Do some more stuff ...
}
... Do even more stuff ...
}
Вы, вероятно, хотите создать новую функцию для того объема.
, Если это действительно должно иметь свой собственный объем, это - вероятно, отдельная логическая функция так или иначе.
Насколько я знаю, что можно создать объем без если.
Использование просто фигурные скобки как это:
{
int x;
}
И я рекомендую против
if (TRUE)
, так как это препятствует readibility.
Я не назвал бы меня закаленным, но я - вид раболепия.
Моя проблема с ним - то, что, если оператор привел бы кого-то полагать, что что-то на самом деле оценивается..., но во времени выполнения, макрос является любой TRUE или FALSE, нет никакого изменения его являющийся чем-то еще. Необходимо или включать код или нет.
, Если то, что Вы означаете делать, является чем-то как ОТЛАДКА #ifdef затем, что необходимо сделать это, чтобы указать читателю, что это - код отладки...