您可以使用 do
从 group_by
获取数据帧列表,只要您命名新列,将存储数据框,然后将该列将其置于> Lapply
。
listDf = df %>% group_by(V1) %>% do(vals=data.frame(.)) %>% select(vals) %>% lapply(function(x) {(x)})
listDf[[1]]
#[[1]]
# V1 V2 V3
#1 a 1 2
#2 a 2 3
#[[2]]
# V1 V2 V3
#1 b 3 4
#2 b 4 2
#[[3]]
# V1 V2 V3
#1 c 5 2
我没有看到任何警告,但是我对您的确切想要的东西有些困惑。
library(ggplot2)
forbargraphMEANS.df<- data.frame (Morph = c("Orange", "Orange", "Green", "Green"),
Choice = c("Orange", "Green", "Orange", "Green"),
Value = c(1.7333330, 1.2666670, 0.8666667, 2.1333333)
)
forbargraphMEANS.df
ggp2M<- ggplot(data = forbargraphMEANS.df,
aes(x = Morph,
y = Value,
fill = Choice))+
geom_bar(position = "fill", stat = "identity") + scale_y_continuous(limits=c(0,3))
ggp2M
如果您希望它加起来多达三个,则可以使用以下代码(删除 position = “填充”
part)
library(ggplot2)
forbargraphMEANS.df<- data.frame (Morph = c("Orange", "Orange", "Green", "Green"),
Choice = c("Orange", "Green", "Orange", "Green"),
Value = c(1.7333330, 1.2666670, 0.8666667, 2.1333333)
)
forbargraphMEANS.df
ggp2M<- ggplot(data = forbargraphMEANS.df,
aes(x = Morph,
y = Value,
fill = Choice))+
geom_bar(stat = "identity") + scale_y_continuous(limits=c(0,3))
ggp2M
简短的答案是肯定的,您的班级图显示了您何时这样做的示例。除了按钮是实际的“物理”项目,并且具有唯一的身份,您不能仅在数据结构中复制它们,您可能会使用这些按钮使用指示,在C ++中使用这些指针。智能指针:
std::vector <std::unique_ptr<Button> > buttons;
使用指针还允许 myWindow
包含其他 myWindow
,而无需您遇到有关不完整类型的编译器错误。
根据屏幕捕获,您的代码跳到SRAM(如预期的那样),但是SRAM中没有代码( MOV R0 R0 R0
表示内存已填充0s),因此是硬故障。
您必须从Flash复制到RAM要在RAM中执行的代码。
library(tidyverse)
strings <- "08,23,02.06.2022,5,7,THISPRODUCT,09.02.2022,yes,89,25" %>%
str_split(pattern = ",") %>%
unlist()
strings[1]
#> [1] "08"
由
我们的目标是使以下Swig接口直观地工作:
%module test
%include "std_tuple.i"
%std_tuple(TupleDD, double, double);
%inline %{
std::tuple<double, double> func() {
return std::make_tuple(0.0, 1.0);
}
%}
我们希望以下面的方式在Python中使用它:
import test
r=test.func()
print(r)
print(dir(r))
r[1]=1234
for x in r:
print(x)
IE索引和迭代应该只是起作用。
通过重新使用我用来包装的一些预处理技巧(本身最初是来自另一个 std :: tuple for我们。尽管此答案是特定于Python的,但实际上也应该适应大多数其他语言。我将首先发布我的std_tuple.i文件,然后注释/解释:
// [1]
%{
#include <tuple>
#include <utility>
%}
// [2]
#define make_getter(pos, type) const type& get##pos() const { return std::get<pos>(*$self); }
#define make_setter(pos, type) void set##pos(const type& val) { std::get<pos>(*$self) = val; }
#define make_ctorargN(pos, type) , type v##pos
#define make_ctorarg(first, ...) const first& v0 FOR_EACH(make_ctorargN, __VA_ARGS__)
// [3]
#define FE_0(...)
#define FE_1(action,a1) action(0,a1)
#define FE_2(action,a1,a2) action(0,a1) action(1,a2)
#define FE_3(action,a1,a2,a3) action(0,a1) action(1,a2) action(2,a3)
#define FE_4(action,a1,a2,a3,a4) action(0,a1) action(1,a2) action(2,a3) action(3,a4)
#define FE_5(action,a1,a2,a3,a4,a5) action(0,a1) action(1,a2) action(2,a3) action(3,a4) action(4,a5)
#define GET_MACRO(_1,_2,_3,_4,_5,NAME,...) NAME
%define FOR_EACH(action,...)
GET_MACRO(__VA_ARGS__, FE_5, FE_4, FE_3, FE_2, FE_1, FE_0)(action,__VA_ARGS__)
%enddef
// [4]
%define %std_tuple(Name, ...)
%rename(Name) std::tuple<__VA_ARGS__>;
namespace std {
struct tuple<__VA_ARGS__> {
// [5]
tuple(make_ctorarg(__VA_ARGS__));
%extend {
// [6]
FOR_EACH(make_getter, __VA_ARGS__)
FOR_EACH(make_setter, __VA_ARGS__)
size_t __len__() const { return std::tuple_size<std::decay_t<decltype(*$self)>>{}; }
%pythoncode %{
# [7]
def __getitem__(self, n):
if n >= len(self): raise IndexError()
return getattr(self, 'get%d' % n)()
def __setitem__(self, n, val):
if n >= len(self): raise IndexError()
getattr(self, 'set%d' % n)(val)
%}
}
};
}
%enddef
- 这只是我们需要宏来工作的额外包含,
- 这些功能适用于我们提供的每个类型参数/code>宏调用,我们需要在此处小心逗号,以使语法保持正确。
- 这是我们的
for_each
宏的机制,它在我们的variadic宏参数列表中调用每个参数的每个操作 - 最终可以开始
>%std_tuple
可以开始。从本质上讲,这是为%模板
的每个专业化的工作手动完成的工作,我们愿意在std namespace中命名。 - 我们使用宏来为每个魔术声明一个构造函数,其中每个元素的构造函数。这里的实际实现是C ++库中的默认实现,这正是我们需要/想要的。
- 我们两次使用
for_each
宏>宏get0
,get1
,get> getn
getn 每个的正确类型元组元素和模板参数大小的正确编号。同样,setn
。这样做允许double
等的通常的SWIG打字或元组包含的任何类型的任何类型都可以自动应用,并且每个呼叫都适用于std :: get&lt; n&gt; n&gt;
。这些实际上只是一个实施细节,而不是打算成为公共接口的一部分,但是暴露它们并没有真正的困难。 - 最后,我们需要实现
__ getItem __
和相应的__ setItem __
。这些只需查找并调用正确的getn
/setn
在类上的功能,然后调用该功能。如果使用无效的索引,我们要注意提出indexError
而不是默认异常,因为当我们尝试迭代元组时,这将正确停止迭代。
这样就足够了,我们可以运行目标代码并获取以下输出:
$ swig3.0 -python -c++ -Wall test.i && g++ -shared -o _test.so test_wrap.cxx -I/usr/include/python3.7 -m32 && python3.7 run.py
<test.TupleDD; proxy of <Swig Object of type 'std::tuple< double,double > *' at 0xf766a260> >
['__class__', '__del__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattr__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__len__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', '__swig_destroy__', '__swig_getmethods__', '__swig_setmethods__', '__weakref__', 'get0', 'get1', 'set0', 'set1', 'this']
0.0
1234.0
通常,这应该正如您希望在Python中的大多数输入/输出情况下工作。
我们可以寻求一些改进:
- 实施重新
- 实施切片,以便
tuple [n:m]
类型索引工作 - 处理诸如Python元组之类的包装。
- 也许对兼容类型进行更多自动转换?
- 避免通过缓存类本身中的值或推迟到方法查找失败之前,避免使用每个get/setItem调用的
__ len __
来调用。
问题
bindisosdropdown
函数是不安全的。它接受 isodata
作为参数,但直接来自网络,因此它被“污染”(可能在攻击者控制下)。然后,它使 isodata
的元素在这些代码(及其他地方)中制作html:
$(isoData).each(function (index, iso) {
isoDropDownHtml += '<option value="' + iso.IsoId + '"' + ...;
});
如果 isodata
IS,例如(在JSON语法中):
[
{ IsoId: "\"><script>alert('Gotcha!')</script><option value=\"" }
]
然后 isodropdownhtml
将是:
<option value=""><script>alert('Gotcha!')</script><option value="" ...
因此,浏览器将执行攻击者有效载荷(这里只是 arter
消息,但这可能是任何恶意代码)。
解决方案
通常,您需要 evase 任何可能在受污染数据中的HTML metacharacters,因此它们不能脱离句法上下文,在这种情况下,这是一个双重引用的属性值。问题逃避使用jQuery的HTML字符串有几个建议有关特定方法的建议。
假设您使用其中一个建议,因此具有称为 evasehtml
的函数,可以逃脱HTML Metacharacters,则可以这样使用:
$(isoData).each(function (index, iso) {
isoDropDownHtml += '<option value="' + escapeHtml(iso.IsoId) + '"' + ...;
// ^^^^^^^^^^
});
如果您现在通过示例 isodata <
iSodata < /code>从之前,您将看到
isoid
被正确编码为HTML属性值,因此没有可执行的JavaScript可执行。
请注意,您必须在应用程序可能处理它的应用程序中逃脱 的污染数据。修复一个实例,甚至所有覆盖率(或任何工具)可以检测到的实例还不够。如果问题中的代码是典型的应用程序,则可能还有更多脆弱的地方,因此有必要进行仔细而系统的审查。
当然,您可以本地进行此操作:
- 在
settings.json
中,暂时删除_
作为单词分隔符(例如“ editor.wordseparator”:“!@#$ $ %^&amp;*() - =+[{]} \\ |;:'\“,。
。 - 将光标放在所有所需线的开端。
- 正确的箭头将所有光标移动在引号中。
- Execute命令
展开选择
。由于您将_
作为单词定界符关闭,因此将扩展以填充引号。否则,所有的键都需要具有相同数量的单词才能使此工作起作用。 - 执行
上情况
。 - 在
设置中。
您可以注册 iSresolved :
[Test]
public void Using_decorator_to_implement_IsResolved()
{
var c = new Container();
c.Register<Abc>();
var d = new AbcDecorator();
c.RegisterDelegate<Abc, Abc>(a => d.Decorate(a), setup: Setup.Decorator);
Assert.IsFalse(d.IsResolved);
var abc = c.Resolve<Abc>();
Assert.IsNotNull(abc);
Assert.IsTrue(d.IsResolved);
}
class Abc {}
class AbcDecorator
{
public bool IsResolved { get; private set; }
public Abc Decorate(Abc a)
{
IsResolved = true;
return a;
}
}
如果您有用户的电子邮件地址,则可以使用查询在其电子邮件
属性中仅选择具有该值的节点,
future: dbRef.orderByChild("Email").equalTo("[email protected]").once(),
或者如果您有变量 useremail
其中的电子邮件地址:
future: dbRef.orderByChild("Email").equalTo(userEmail).once(),
另请参阅来自实时数据库。
检查您是否将字符串限制为代码中的3位数字。
这对我来说很好。
SET @fecha_inicio = STR_TO_DATE('2017-06-27T23:59:00.123','%Y-%m-%dT%H:%i:%s.%f');
select CONCAT((hour(@fecha_inicio)),
"-" ,
(Case when minute(@fecha_inicio) < 15 THEN 1
when minute(@fecha_inicio) < 30 THEN 2
when minute(@fecha_inicio) < 45 THEN 3
when minute(@fecha_inicio) < 60 THEN 4 END)) AS HQ ;
谢谢您的分享!
我们还面临同一问题,并且使用ARM模板选择最新版本的Windows Server映像,我们不知道为什么突然失败了。现在,我们正在使用早期版本的Windows Server映像来克服此问题。
您可以直接使用上下文值,也可以使用 useeffect
钩子:
export default function Appointments() {
const datePickedCtx = useContext(DateContext);
const [selectedDate, setSelectedDate] = useState(datePickedCtx.date);
useEffect(()=>{
setSelectedDate(datePickedCtx.date);
}, [datePickedCtx]);
return (
<View style={styles.rootContainer}>
<View style={styles.dateContainer}>
<Text style={styles.dateText}>Via State: {selectedDate}</Text>
<Text style={styles.dateText}>Via Context: {datePickedCtx.date}</Text>
<DateSelect size={24} color={GlobalStyles.colors.lightText} />
</View>
</View>
);
}
我已经检查了Myauthorizer是否已经是此堆栈中的资源。
它不必在堆栈中。它可能位于您的帐户中,使用AWS控制台或其他CloudFormation堆栈手动创建。您必须将 myauthorizer
的名称更改为唯一。
为了更轻松地断言响应,尤其是嵌套属性,您可以使用
cy> cys-spok
。也更快地理解。For easier assertions on a response, especially nested properties, you can use
cy-spok
. It's also quicker to comprehend.如何在API测试中检查属性的顺序