我读了这篇关于 Rcpp 中的类和模块的博客文章,我试图重新创建它,但我遇到了麻烦。
这是帖子中代码的缩写版本:
#include <Rcpp.h>
using namespace Rcpp;
class Point {
public:
Point( double x_, double y_) : x(x_), y(y_){}
double x, y ;
} ;
class Shape {
public:
Shape( const Point& center_ ) : center(center_){}
Point center ;
virtual double area() const { return 0.0 ;}
virtual bool contains(const Point& point) const { return false ; }
} ;
RCPP_MODULE(play){
class_<Point>("Point")
.constructor<double,double>()
.field( "x", &Point::x)
.field( "y", &Point::y)
;
class_<Shape>( "Shape" )
.constructor<Point>()
.method( "area", …Run Code Online (Sandbox Code Playgroud) 在基数R中,可以轻松过滤到两列等于的行,如下所示:
mtcars[mtcars$cyl==mtcars$carb,]
Run Code Online (Sandbox Code Playgroud)
使用dplyr的filter这种可以轻松完成
mtcars %>% filter(cyl==carb)
Run Code Online (Sandbox Code Playgroud)
但是,如果我正在使用此代码编写函数,我想使用filter_,但此代码不起作用
mtcars %>% filter_("cyl"=="carb")
Run Code Online (Sandbox Code Playgroud)
因为在这种情况下,它认为"碳水化合物"是要测试的值而不是变量.
我的问题是你如何filter_用来比较data.frame中的两个变量?
我已成功将图像放在左侧,如下所示:
<div class="Carl1">
<a href="https://rads.stackoverflow.com/amzn/click/com/1940412145" rel="nofollow noreferrer" target="_blank"><img class="image-left" src="http://caribeauchamp.com/wp-content/uploads/2015/04/first-time-final-cover.jpg" alt="My First Time in Hollywood" />
<span><strong>Amazon</strong></span>
</a>
</div>
Run Code Online (Sandbox Code Playgroud)
和CSS:
.Carl1 {
text-align: left;
}
.image-left {
float: left;
margin: 15px 20px 10px 0px;
border: solid 4px #fff;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我希望它出现在图像下方时,我的文字出现在图像的右上角.我究竟做错了什么?
我有一个闪亮的应用程序,我作为一个包分发。当我在计算机上使用包/应用程序时,它会在 RStudio 中打开一个新窗口并在那里运行应用程序。当其他人在他们的计算机上运行包/应用程序时,它会在 Internet Explorer 中打开,这是有问题的。
我将runApp代码更改为 include launch.browser=rstudio::viewer,这会阻止应用程序在 IE 中打开,但会在小查看器窗格中运行该应用程序,而不是打开一个新窗口。我似乎无法在闪亮的文档中找到关于如何runApp在 Rstudio 窗口中打开的任何地方。
如果我可以告诉runApp在查看器窗格中运行,我也应该能够在 Rstudio 窗口中运行它。有谁知道怎么做?
问候
我的问题是当我在我的计算机上使用数据表而在服务器上formatDate正在改变时我知道我正在使用 method = 'toLocaleDateString'它可能不是很好的方法
在我的电脑上它给我我想要的格式:
1 février 2000
21 mars 2000
Run Code Online (Sandbox Code Playgroud)
闪亮它给我:
01/02/2000
21/03/2000
Run Code Online (Sandbox Code Playgroud)
本地计算机和服务器都有 Sys.timezone()
[1] "Europe/Paris"
Run Code Online (Sandbox Code Playgroud)
我想这样做
a <-structure(list(timestamp = structure(c(949363200, 953596800,
961286400, 962582400, 965347200, 969667200),
class = c("POSIXct", "POSIXt"), tzone = "UTC"),
anoms = c(1, 1, 1, 1, 1, 2), syndrome = c("Acrosyndrome",
"Acrosyndrome", "Acrosyndrome", "Acrosyndrome", "Acrosyndrome",
"Acrosyndrome")), .Names = c("timestamp", "anoms", "syndrome"
), row.names = c(NA, 6L), class = "data.frame")
datatable(a) %>% formatDate( 1, method = 'toLocaleDateString')
a
Run Code Online (Sandbox Code Playgroud)
谢谢
我写了一个使用的函数,match.call它在我直接调用函数时起作用,但是,当函数在另一个函数中被调用时它会中断.我认为它与如何match.call处理环境有关,但我无法弄明白.这是一个可重复的例子:
tester <- function() {
var <- "helloworld"
myFunc(var)
}
myFunc <- function(x) {
tmp <- match.call()
tmp[[1]] <- quote(toupper)
eval(tmp)
}
tester() # error
myFunc("helloworld") # works fine
Run Code Online (Sandbox Code Playgroud)
我相信当它myFunc被调用时tester它找不到var因为它存在于tester函数的孤立环境中.
关于如何myFunc上班的任何想法tester将不胜感激.我试着改变环境eval和match.call,但无济于事.
我发现包中predict的svyglm对象和对象有一些奇怪的行为survey。如果您的 newdata 中predict的因子/字符具有一个级别,则会输出错误:
Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) :
contrasts can be applied only to factors with 2 or more levels
Run Code Online (Sandbox Code Playgroud)
如果我将一个单级变量作为模型的预测变量,这个错误是有道理的,但对于 newdata 我没有看到问题。
定期glm这工作正常。
雷:
library(survey)
data(api)
dstrat<-svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc)
svymodel <- svyglm(api00~sch.wide,design=dstrat)
# errors
predict(svymodel, data.frame(sch.wide=rep("No",10)))
regmodel <- glm(api00~sch.wide,data=apistrat)
# works
predict(regmodel,data.frame(sch.wide=rep("No",10)))
Run Code Online (Sandbox Code Playgroud)
我发现如果我破解因子的水平它会起作用,但这应该不是必需的:
svymodel <- svyglm(api00~sch.wide,design=dstrat)
predict(svymodel, data.frame(sch.wide=factor(rep("No",10),
levels = c("No","random phrase"))))
Run Code Online (Sandbox Code Playgroud)
我是不是误解了什么,或者这是survey包裹的问题?
我在将列表框放入多选列表框时遇到问题.我知道制作列表框multiselect的代码是:
[forms]![formname]![listboxname].multiselect=2
Run Code Online (Sandbox Code Playgroud)
但是,当我在Private Sub Form_Load()中运行它时,我得到运行时错误'2448'您无法为此对象分配值.
我想我不明白如何制作列表框多选,但我很确定我理解如何在VBA中使用多选列表框.
任何有关如何使用上述代码实际将列表框更改为多选的帮助将不胜感激.
我正在尝试为我的 Access 数据库创建登录名,但无法让它工作。这是我的代码(请记住“Preparer”是保存用户名和密码信息的表的名称:
Private Sub Command1_Click()
If IsNull(Me.txtLogin) Then
MsgBox "Please Enter Login", vbInformation, "Need ID"
Me.txtLogin.SetFocus
ElseIf IsNull(Me.txtPassword) Then
MsgBox "Please Enter Password",vbInformation, "Need Password"
Me.txtPassword.SetFocus
Else
If ((IsNull(DLookup("Login","Preparer","Login='& Me.txtLogin.Value &'"))) or _
(IsNull(DLookup("Password","Preparer","Password='& Me.txtPassword.Value &'")))) Then
MsgBox "Incorrect Login or Password"
Else
DoCmd.Close
MsgBox "Success"
DoCmd.OpenForm "Master"
End If
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
前两个部分有效,因此如果登录名或密码为空,它会给出正确的错误消息,但是每当我输入登录名和密码时,即使它们是正确的(即它们存在于准备器表中),它也会给我“错误的登录名或密码”密码”
我假设问题出在此处的代码中:
If ((IsNull(DLookup("Login","Preparer","Login='& Me.txtLogin.Value &'"))) or _
(IsNull(DLookup("Password","Preparer","Password='& Me.txtPassword.Value &'")))) Then
MsgBox "Incorrect Login or Password"
Run Code Online (Sandbox Code Playgroud)
有人明白为什么我无法深入了解 else 语句吗?
我在表单上有一个按钮,显示当前日期.非常简单的代码:
MsgBox DATE
Run Code Online (Sandbox Code Playgroud)
这工作了几个月,但在一些看似无关的更改后,这停止了工作,我得到错误:运行时错误'2465':找不到表达式中引用的字段"DATE".
显然,Access停止将DATE识别为函数,并试图将其作为不存在的对象来查找.在VBA代码中,DATE()立即由DATE替换为Access.
表单中的所有对象都没有命名为Date,控制源表中的任何字段都没有名称Date,所以我不知道为什么Access会混淆.
当我创建一个带有按钮的新表单并使用相同的代码时.有任何想法吗?
我正在学习如何使用迭代器,但我无法概念化如何使用它们从双循环构造向量.
这是一个例子:假设我想编写一个输入两个向量的函数,并输出通过组合每个向量中的单个元素生成的所有可能和的向量(这是一个人为的例子).这是一个工作版本:
#include <RcppArmadillo.h>
using namespace Rcpp;
// [[Rcpp::depends(RcppArmadillo)]]
// [[Rcpp::export]]
arma::colvec test(arma::colvec x, arma::colvec y) {
arma::colvec out(x.size()*y.size());
arma::colvec::iterator ix,iy;
int count=0;
for (ix=x.begin();ix!=x.end();ix++) {
for (iy=y.begin();iy!=y.end();iy++) {
out(count)=*ix+*iy;
count+=1;
}
}
return out;
}
/*** R
test(c(1:15),c(15:1))
*/
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我觉得使用count作为out矢量的ad-hoc迭代器似乎不优雅,我觉得必须有一个更好的解决方案.我希望这样的东西能起作用:
arma::colvec::iterator ix,iy,io;
for (ix=x.begin(),io=out.begin();ix!=x.end(),io!=out.end();ix++,io++) {
for (iy=y.begin();iy!=y.end();iy++,io++) {
*io=*ix+*iy;
}
}
Run Code Online (Sandbox Code Playgroud)
这会导致我的计算机崩溃,所以我猜我无法对io每个循环进行迭代.如果有人能指出在这种情况下的良好做法,我将非常感激.
问候
根据此处的文档
我使用通配符添加了http限制,如下所示:
这应该涵盖所有子域的所有路径,但是RefererNotAllowedMapError当我尝试使用时会收到错误消息https://www.dev.mydomain.com/#/
我什至尝试显式添加https://www.dev.mydomain.com/#/,但出现相同的错误。
我完全迷路了,不知道该怎么办。显然,其他人正在使用Google Maps API,并没有完全不受限制,因此必须有一种方法来做到这一点。
google-maps google-api google-maps-api-3 google-console-developer