我有一个从xmlAttrs返回的命名字符向量,如下所示:
testVect <- structure(c("11.2.0.3.0", "12.89", "12.71"), .Names = c("db_version",
"elapsed_time", "cpu_time"))
Run Code Online (Sandbox Code Playgroud)
我想将其转换为如下所示的数据框:
testDF <- data.frame("db_version"="11.2.0.3.0","elapsed_time"=12.89,"cpu_time"=12.71)
head(testDF)
db_version elapsed_time cpu_time
1 11.2.0.3.0 12.89 12.71
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用std::min_element并std::max_element返回双精度矢量中的min和max元素.我的编译器不喜欢我目前正在尝试使用它们,我不理解错误消息.我当然可以编写自己的程序来查找最小值/最大值,但我想了解如何使用这些函数.
#include <vector>
#include <algorithm>
using namespace std;
int main(int argc, char** argv) {
double cLower, cUpper;
vector<double> C;
// code to insert values in C not shown here
cLower = min_element(C.begin(), C.end());
cUpper = max_element(C.begin(), C.end());
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是编译器错误:
../MIXD.cpp:84: error: cannot convert '__gnu_cxx::__normal_iterator<double*, std::vector<double, std::allocator<double> > >' to 'double' in assignment
../MIXD.cpp:85: error: cannot convert '__gnu_cxx::__normal_iterator<double*, std::vector<double, std::allocator<double> > >' to 'double' in assignment
Run Code Online (Sandbox Code Playgroud)
有人请解释我做错了什么吗?
我想在一个简单的单行命令中随机重新组织向量中数字的顺序?
我的特定向量V对于从1到10的每个值有150个条目:
V <- rep(1:10, each=150)
Run Code Online (Sandbox Code Playgroud) 来自维基百科:
交叉乘积是对三维欧几里德空间中的两个向量的二元运算,其导致另一个向量垂直于包含两个输入向量的平面.
鉴于定义仅定义在三个(或七个,一个和零)维度中,如何计算两个二维向量的叉积?
我见过两个实现.一个返回一个新的向量(但只接受一个向量),另一个返回一个标量(但是是两个向量之间的计算).
实现1(返回标量):
float CrossProduct(const Vector2D & v1, const Vector2D & v2) const
{
return (v1.X*v2.Y) - (v1.Y*v2.X);
}
Run Code Online (Sandbox Code Playgroud)
实现2(返回向量):
Vector2D CrossProduct(const Vector2D & v) const
{
return Vector2D(v.Y, -v.X);
}
Run Code Online (Sandbox Code Playgroud)
为什么不同的实施?我将使用标量实现?我将使用矢量实现?
我问的原因是因为我自己编写了一个Vector2D类,并且不知道使用哪种方法.
我正在计算两点之间的距离.我用C++中的向量存储的两点:(0,0)和(1,1).
我应该得到结果
0
1.4
1.4
0
Run Code Online (Sandbox Code Playgroud)
但我得到的实际结果是
0
1
-1
0
Run Code Online (Sandbox Code Playgroud)
我认为在向量中使用迭代器的方式有问题.我该如何解决这个问题?
我发布了以下代码.
typedef struct point {
float x;
float y;
} point;
float distance(point *p1, point *p2)
{
return sqrt((p1->x - p2->x)*(p1->x - p2->x) +
(p1->y - p2->y)*(p1->y - p2->y));
}
int main()
{
vector <point> po;
point p1; p1.x = 0; p1.y = 0;
point p2; p2.x = 1; p2.y = 1;
po.push_back(p1);
po.push_back(p2);
vector <point>::iterator ii;
vector <point>::iterator jj;
for (ii = po.begin(); ii != po.end(); ii++) …Run Code Online (Sandbox Code Playgroud) 这篇文章的评论部分中有一个关于使用std::vector::reserve()vs.的帖子std::vector::resize().
这是原始代码:
void MyClass::my_method()
{
my_member.reserve(n_dim);
for(int k = 0 ; k < n_dim ; k++ )
my_member[k] = k ;
}
Run Code Online (Sandbox Code Playgroud)
我相信要写出元素vector,正确的做法是打电话std::vector::resize(),而不是std::vector::reserve().
实际上,以下测试代码在VS2010 SP1的调试版本中"崩溃":
#include <vector>
using namespace std;
int main()
{
vector<int> v;
v.reserve(10);
v[5] = 2;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我是对的,还是我错了?并且VS2010 SP1是对的,还是错了?
我有一个整数列表,我需要迭代,但数组是不合适的.之间有什么区别vectors和lists,是有什么我需要知道我挑式前?
为了清楚起见,我已经阅读了QT文档,但这是我所知道的程度:
QList<T>,QLinkedList<T>并QVector<T>提供类似的功能.这是一个概述:
- 对于大多数用途,
QList是正确的使用类.它的基于索引的API比QLinkedList's基于迭代器的API更方便,并且通常比QVector将其项目存储在内存中的速度更快.它还扩展到可执行文件中较少的代码.- 如果您需要一个真实的链表,保证在列表中间插入常量时间,并将迭代器设置为项而不是索引,请使用
QLinkedList.- 如果您希望项目占据相邻的内存位置,请使用
QVector.
我只是寻找B1(newx)线性模型系数的值,而不是名称.我只想要0.5值.我不想要名字"newx".
newx <- c(0.5,1.5.2.5)
newy <- c(2,3,4)
out <- lm(newy ~ newx)
Run Code Online (Sandbox Code Playgroud)
out 好像:
Call:
lm(formula = newy ~ newx)
Coefficients:
(Intercept) newx
1.5 1.0
Run Code Online (Sandbox Code Playgroud)
我到了这里 但现在我被卡住了.
out$coefficients["newx"]
newx
1.0
Run Code Online (Sandbox Code Playgroud) 在最近的一次采访中,我建议使用vector<pair<int,int>>over vector<vector<int>>,因为我们只想为向量中的每个条目存储两个值。vector<pair<int,int>>我说了一些“我们应该使用over vector<vector<int>>,因为后者比前者重”的话。
编码会议结束后,他们说使用对而不是向量是个好主意,并要求我详细说明之前所说的“更重”的含义。不幸的是,我无法详细说明。是的,我知道我们只能在一对中输入两个值,但在向量中可以输入更多值,并且当向量的大小==容量等时,该向量会自动调整大小,等等,但我应该如何回答他们的问题 - 为什么具体使用比vector<pair<int,int>> 更好vector<vector<int>>?在后一种情况下还做了哪些额外的事情?
如何从data.table中提取列作为向量的列?以下是我尝试过的一些代码片段:
DT<-data.table(x=c(1,2),y=c(3,4),z=c(5,6))
DT
# x y z
#1: 1 3 5
#2: 2 4 6
Run Code Online (Sandbox Code Playgroud)
我想使用列位置获取此输出
DT$y
#[1] 3 4
is.vector(DT$y)
#[1] TRUE
Run Code Online (Sandbox Code Playgroud)
使用列位置获取此输出的其他方法
DT[,y]
#[1] 3 4
is.vector(DT[,y])
#[1] TRUE
Run Code Online (Sandbox Code Playgroud)
这不会给出矢量
DT[,2,with=FALSE]
# y
#1: 3
#2: 4
is.vector(DT[,2,with=FALSE])
#[1] FALSE
Run Code Online (Sandbox Code Playgroud)
这两个不起作用:
DT$noquote(names(DT)[2]) # Doesn't work
#Error: attempt to apply non-function
DT[,noquote(names(DT)[2])] # Doesn't work
#[1] y
Run Code Online (Sandbox Code Playgroud)
这不会给出一个向量:
DT[,noquote(names(DT)[2]),with=FALSE] # Not a vector
# y
#1: 3
#2: 4
is.vector(DT[,noquote(names(DT)[2]),with=FALSE])
#[1] FALSE
Run Code Online (Sandbox Code Playgroud)