我有脑痉挛.以下是玩具数据集:
df <- data.frame(
id = 1:6,
v1 = c("a", "a", "c", NA, "g", "h"),
v2 = c("z", "y", "a", NA, "a", "g"),
stringsAsFactors=F)
Run Code Online (Sandbox Code Playgroud)
我有一个特定的值,我希望在一组定义的列中找到它,我想确定它所在的位置.我正在搜索的字段是字符,诀窍是我正在寻找的值可能不存在.此外,数据集中还存在空字符串.
假设我知道如何做,变量位置表示我想要返回的值.
> df
id v1 v2 position
1 1 a z 1
2 2 a y 1
3 3 c a 2
4 4 <NA> <NA> 99
5 5 g a 2
6 6 h g 99
Run Code Online (Sandbox Code Playgroud)
一般规则是我想找到值"a"的位置,如果它没有找到或者如果缺少v1,那么我想要99返回.
在这个例子中,我正在搜索v1和v2,但实际上,我有10个不同的变量.值得注意的是,我搜索的值只能在10个变量中存在一次.
生成此重新编码的最佳方法是什么?
提前谢谢了.
我想在构建选项中启用-Wfloat-equal(这是一个GCC标志,当通过==或!=运算符比较两个浮点数时会发出警告)。但是,在我使用的库的几个头文件中,以及我自己的代码的很大一部分中,我经常想使用float或double的非零值进行分支,使用if (x)或if (x != 0)或它们的变体。
由于在这些情况下,我绝对可以确定该值完全为零-检查的值是显式零初始化的结果calloc,等等。-我看不出使用此比较的不利之处,而是成本更高且可读性更差调用我的near(x, 0)函数。
是否有某种方法可以-Wfloat-equal对所有其他种类的浮点相等比较产生影响,但允许这些传递不加标记?库头文件中有足够多的实例,它们可以严重污染我的警告输出。
试图复制整个文件夹,但是当我这样做时:
<Copy SourceFiles="$(TargetDir)\*.*" DestinationFolder="$(BuildOutput)\SomeDir" />
Run Code Online (Sandbox Code Playgroud)
副本尝试执行此操作:复制c:\ source\*.*c:\ destination\SomeDir\*.* 并失败并显示"非法字符"
这更像是一个"你能解释这个"类型的问题,而不是其他任何问题.
我在工作中遇到了一个问题,我们在表中使用NaN值,但是当表被排序时,它以一种非常奇怪,奇怪的方式出现.我认为NaN正在捣乱,所以我写了一个测试应用程序来判断这是否属实.这就是我做的.
static void Main(string[] args)
{
double[] someArray = { 4.0, 2.0, double.NaN, 1.0, 5.0, 3.0, double.NaN, 10.0, 9.0, 8.0 };
foreach (double db in someArray)
{
Console.WriteLine(db);
}
Array.Sort(someArray);
Console.WriteLine("\n\n");
foreach (double db in someArray)
{
Console.WriteLine(db);
}
Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)
结果如下:
之前:
4,2,NaN,1,5,3,NaN,10,9,8
Run Code Online (Sandbox Code Playgroud)
后:
1,4,NaN,2,3,5,8,9,10,NaN
Run Code Online (Sandbox Code Playgroud)
所以是的,NaN有些如何使排序的数组以奇怪的方式排序.
引用弗莱; "为什么这些东西?"
我知道理论上依赖注入是什么,但我还没有在我的任何项目中实际使用过依赖注入.所以请考虑我成为DI菜鸟.
直截了当的问题是; MEF可以用于依赖注入吗?
如果可以,我的后续问题是; 使用MEF进行依赖注入是一个好主意吗?
我理解我的跟进问题可能被视为主观问题.但是,我正在寻找支持和反对的最佳做法和理由.所以,我希望我的跟进问题不会出现太多的问题.
所有这些的背景是我觉得有点迷失试图弄清楚如何为asp.net mvc制作一个插件框架.
我不太明白这意味着什么......我只是从我非常非常基本的Python体验中学习C++ ......所以这可能是一个非常愚蠢的问题.我的问题是......说你有经典的"Hello World"计划,你就有了这条线:
cout<<"Hello World!"<<endl;
Run Code Online (Sandbox Code Playgroud)
<< mean ...是什么...因为我只是在C中使用输入,看到你做了类似的事情:
int i;
cin>>i;
Run Code Online (Sandbox Code Playgroud)
而且我注意到它有>>而不是<<而且我已经读到那些是按位的变化......我并不完全明白那些是什么......但我认为这可能会有所不同......帮助...提前致谢
我试图删除一行,其主键(列名=版本)例如是4.002000000000001.所以我说声明:
DELETE FROM tbl WHERE version=4.002;
Run Code Online (Sandbox Code Playgroud)
现在,这不会工作,因为没有版本等于4.002的行,只有版本等于4.002000000000001的行. 请不要问为什么我不将版本存储为DB中的4.002,因为我试图通过使列类型为DECIMAL(5,3)来实现,但它仍然存储来自Java的双精度为4.002000000000001.请不要问为什么我不说"...... WHERE version = 4.002000000000001;" 因为当我使用JDBC创建语句时,我无法控制java格式如何加倍(甚至使用DecimalFormat类).
那么有没有办法在SQLite3中向下舍入(floor函数)?那么我可以说"删除其FLOOR(版本)等于4.002的行?
我是一名C++程序员(使用Java查询SQL数据库,请不要问为什么:P)谁不熟悉复杂的SQL查询,所以这对我想做的事情是正确的:
DELETE FROM tbl WHERE ROUND(version, 0.5)=4.002;
Run Code Online (Sandbox Code Playgroud) 假设我们要应用一系列的变换,int f1(int),int f2(int),int f3(int),对对象的列表.一种天真的方式
SourceContainer source;
TempContainer1 temp1;
transform(source.begin(), source.end(), back_inserter(temp1), f1);
TempContainer2 temp2;
transform(temp1.begin(), temp1.end(), back_inserter(temp2), f2);
TargetContainer target;
transform(temp2.begin(), temp2.end(), back_inserter(target), f3);
Run Code Online (Sandbox Code Playgroud)
这第一个解决方案是因为有多余的空间要求不是最优的temp1和temp2.所以,让我们更聪明一点:
int f123(int n) { return f3(f2(f1(n))); }
...
SourceContainer source;
TargetContainer target;
transform(source.begin(), source.end(), back_inserter(target), f123);
Run Code Online (Sandbox Code Playgroud)
这第二个解决方案是要好得多,因为不仅是代码简单,但更重要的是有没有中间的计算空间需求少.
但是,组合f123必须在编译时确定,因此在运行时固定.
如果要在运行时确定合成,我将如何有效地尝试这样做?例如,如果这个码是在一个RPC服务和实际组成-其可以是任何的子集的任何置换f1,f2和f3--is基于来自RPC调用的参数.
我有一个Android项目.在eclipse中,如果我更换一行并在手机上重新运行应用程序,则周转时间非常快.在Intellij上,它完全重新编译了我的项目并花了半分钟.这可以以任何方式加速吗?这是一个错误还是我错误配置了什么?