我有一个简单的问题:在R ^ pi中给出p点(非共线)找到通过这些点的超平面(以帮助澄清我在R中输入所有内容):
p<-2
x<-matrix(rnorm(p^2),p,p)
b<-solve(crossprod(cbind(1,x[,-2])))%*%crossprod(cbind(1,x[,-2]),x[,2])
Run Code Online (Sandbox Code Playgroud)
那么,给定第p + 1个点与第一个p点不共线,我发现方向垂直于b:
x2<-matrix(rnorm(p),p,1)
b2<-solve(c(-b[-1],1)%*%t(c(-b[-1],1))+x2%*%t(x2))%*%x2
Run Code Online (Sandbox Code Playgroud)
也就是说,b2定义垂直于b并经过x2的p维超平面.现在,我的问题是:
公式来自我对这个维基百科条目的解释("solve(A)"是A ^ -1的R命令).为什么这不适用于p> 2?我究竟做错了什么 ?
PS:我看过这篇文章(在关注流量编辑:抱歉不能发布多个链接)但不知怎的,它对我没有帮助.
提前致谢,
当p> 2时,我对Liu的解决方案的实现/理解有问题:
不应该将明显矩阵的qr分解与超平面方向之间的点积设为0?(即,如果qr向量垂直于超平面)
即,当p = 2时
c(-b[2:p],1)%*%c(a1)
Run Code Online (Sandbox Code Playgroud)
给出0.当p> 2时,它不会.
这是我尝试实施Victor Liu的解决方案.
a)在R ^ p中给出p线性独立观测:
p<-2;x<-matrix(rnorm(p^2),p,p);x
[,1] [,2]
[1,] -0.4634923 -0.2978151
[2,] 1.0284040 -0.3165424
Run Code Online (Sandbox Code Playgroud)
b)将它们放在矩阵中并减去第一行:
a0<-sweep(x,2,x[1,],FUN="-");a0
[,1] [,2]
[1,] 0.000000 0.00000000
[2,] 1.491896 -0.01872726
Run Code Online (Sandbox Code Playgroud)
c)执行矩阵a0的QR分解.nullspace中的向量是我正在寻找的方向:
qr(a0)
[,1] [,2]
[1,] -1.491896 0.01872726
[2,] 1.000000 0.00000000
Run Code Online (Sandbox Code Playgroud)
确实; 这个方向与维基百科公式的应用给出的方向相同(使用x2 =(0.4965321,0.6373157)):
[,1]
[1,] 2.04694853
[2,] -0.02569464
Run Code Online (Sandbox Code Playgroud)
......具有更高尺寸的优点.
我还有最后一个问题:当p> 2时,另一个p-1(即(1,0)这里)QR向量的含义是什么?-提前致谢,
如果函数使用函数体中未声明的变量,是否有一种方法在R中弹出错误消息:即,我希望有人标记这种类型的函数
aha<-function(p){
return(p+n)
}
Run Code Online (Sandbox Code Playgroud)
看到; 如果恰好有一个"n"变量位于某个地方,aha(p = 2)会给我一个"答案",因为R只会从那个被称为"环境"的神秘地方取"n"
即R在调用时的函数
x[.Internal(sample(length(x), size, replace, prob))]
Run Code Online (Sandbox Code Playgroud)
提前致谢;
我正在运行ubuntu,64位.我有这个最小的测试包,我学习如何做这些事情(我正在学习本教程,除了我在包中也有一些c代码).当我跑
R CMD check MySmallPackage
Run Code Online (Sandbox Code Playgroud)
在它上面,它工作正常(见下文).然后,我跑了
R CMD build MySmallPackage
Run Code Online (Sandbox Code Playgroud)
它也有效(见下文).所以现在,我将生成的.tar.gz发送给运行win7 64位(和64位R)的朋友,他收到此错误消息:
*** arch - i386
ERROR: compilation failed for package 'MySmallPackage'
* removing 'C:/Users/ES/Documents/R/win-library/2.15/MySmallPackage'
Warning in install.packages :
running command 'C:/PROGRA~1/R/R-215~1.1/bin/x64/R CMD INSTALL -l "C:/Users/ES/Documents/R/win-library/2.15" "C:/Users/ES/Downloads/MySmallPackage_0.1.1(1).tar.gz"' had status 1
Warning in install.packages :
installation of package ‘C:/Users/ES/Downloads/MySmallPackage_0.1.1(1).tar.gz’ had non-zero exit status
Run Code Online (Sandbox Code Playgroud)
这非常令人费解.任何人都可以指出可能导致这个问题的原因(我多年没有使用过Windows,但是在linux上安装包很好).错误信息对我来说有点神秘.
$ R CMD check MySmallPackage
* using log directory ‘~/MySmallPackage.Rcheck’
* using R version 2.15.2 (2012-10-26)
* using platform: x86_64-pc-linux-gnu (64-bit)
* using session charset: …Run Code Online (Sandbox Code Playgroud) 我正在寻找用于计算R rank函数的C源
我查看了R/src/main/目录,我找不到它.当我使用R的内部秩功能时,有谁知道我在哪里可以找到R调用的源代码?例如当一个人做的时候叫什么.Internal(rank(x,"average")).
或者,我想确保获得对应于浮点向量的秩向量的有效方法是首先对它们进行排序.
我正在构建一个包含旧f77代码的包,该代码绝对应该使用o0优化选项构建。
在/src/Makevars我的包中我添加了这一行:
FFLAGS=-O0 -pipe -g $(LTO)
Run Code Online (Sandbox Code Playgroud)
但是当我编译我的包时,我看到 R 仍在使用文件中的默认编译选项/usr/lib/R/etc/Makeconf:
gfortran -fpic -O3 -pipe -g -c Babar.f -o Babar.o
Run Code Online (Sandbox Code Playgroud)
如何覆盖 R 中包的 FORTRAN 文件的默认编译选项?
(我打算通过 CRAN 分发该包,因此应从Makevars文件设置编译选项)
我正在尝试学习C++并且有一个小小的初学者问题:
为什么standardize函数不修改其输入?
为了帮助解答,我在这里发布了Coliru的执行代码 以及我的程序源代码 .
参考代码,问题是:为什么不是在打印之后打印outside的是什么inside?
#include <cstdlib>
#include <ctime>
#include <algorithm> // std::copy
#include <iostream>
using namespace std;
void standardize(const int n,const float x[],float ave,float sct){
float acc=0.0f,sum=0.0f;
sum=std::accumulate(x,x+n,0.0f);
ave=sum/(float)n;
std::for_each(x,x+n,[&](const float d){acc+=(d-ave)*(d-ave);});
sct=std::sqrt(acc/(float)(n-1));
std::cout << "inside" << std::endl;
std::cout << ave << std::endl;
std::cout << sct << std::endl;
return;
}
int main(){
const int n=1024;
float a2[n];
float part0=0.0f,part1=0.0f;
std::srand(std::time(0));
for(int i=0;i<n;i++) a2[i]=std::rand()/(float)RAND_MAX;
standardize(n,a2,part0,part1);
std::cout << "outside" << std::endl;
std::cout …Run Code Online (Sandbox Code Playgroud) 所以我正在制作一个R包.在这个包中,我有一个函数foo1返回一个S3列表,其组件可以绘制.现在我有一个功能plotfoo1可以做到这一点.例如以下目前的工作原理:
output1<-foo1(Data)
plotfoo1(output1)
Run Code Online (Sandbox Code Playgroud)
现在我的问题.我想覆盖R中的绘图函数,以便以下将产生相同的输出:
plot(output1)
Run Code Online (Sandbox Code Playgroud)
但我不知道该怎么做.我正在寻找(一个链接?)解释如何做到这一点.它应该是可能的,因为似乎许多包具有自己的自定义绘图功能...
假设您要将函数的参数的默认值(以修改让我们使用的想法dnorm)mean=0,sd=1更改为 mean=pi,sd=pi在另一个函数的范围内foo.
你可以这样做:
T_par<-list(mean=pi,sd=pi)
x=3
do.call(dnorm,c(list(x),T_par))
Run Code Online (Sandbox Code Playgroud)
但实际上我发现在我的应用程序中使用的开销do.call太高了.
我想要做的是创建一个函数my_dnorm,该函数将是一个副本,dnorm除了参数的默认值,它将根据T_par而my_dnorm不是调用
而设置do.call(dnorm,c(list(x),T_par)).这该怎么做?
我正在使用 python,当我单击本页DATA V CSV底部的按钮时,我试图获取 CSV 来源的链接。
我试过beautifulsoup:
import requests
from bs4 import BeautifulSoup
url = 'https://www.ceps.cz/en/all-data#AktualniSystemovaOdchylkaCR'
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
# Find the link to the CSV file
csv_link = soup.find('a', string='DATA V CSV').get('href')
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
soup.find("button", {"id":"DATA V CSV"})
但没有找到后面的链接DATA V CSV。