Как говорили другие ответы, оберните каждый вызов qplot()
в print()
(это R FAQ 7.22 ). Причина в том, что ggplot не печатаются на графическом устройстве до тех пор, пока на них не вызывается print.ggplot
. print()
- это общая функция, которая отправляется в print.ggplot
за кулисами.
Когда вы работаете в repl («read-оцените-print loop», aka shell), возвращаемое значение предыдущей строки ввода автоматически печатается с помощью неявного вызова print()
. Вот почему qplot(mtcars[,Var], wt, data=mtcars, xlab=Var)
работает на вас. Это не связано с областью действия или циклом for. Если бы вы отправили эту строку в другое место, которое не возвращается непосредственно к реплику, например, в функции, которая возвращает что-то еще, она ничего не сделает.
std::plus
является функциональным объектом и должен использоваться так же, как и другие функциональные объекты.
Минимальный пример:
#include <iostream>
#include <string>
#include <functional>
int main()
{
std::string one="one";
std::string two="two";
std::string result=std::plus<std::string>()("one","two"); //a temp function object created.
std::cout << result;
}
См. Демонстрацию здесь .
std::plus
- это функтор, что означает, что вам нужно создать объект из него:
auto adder = std::plus<>{};
auto result = adder(one, two); // result is onetwo
По этой причине вы никогда не будете использовать это так, как у вас: вы всегда будете просто написать one + two
.
Но это означает, что вы можете использовать это так же, как вы использовали бы std::greater
и т.п. вместе.
См. Что такое функторы C ++ и их использование? для получения дополнительной информации о функторах.