虽然我可以使用以下代码获得程序集版本
var assembly = typeof(App).GetTypeInfo().Assembly;
var assemblyVersion = assembly.GetCustomAttribute<AssemblyFileVersionAttribute>().Version;
Run Code Online (Sandbox Code Playgroud)
我想从Package.appxmanifest
本例1.0.0.4中检索版本
<?xml version="1.0" encoding="utf-8"?>
<Package xmlns="http://schemas.microsoft.com/appx/2010/manifest" xmlns:m2="http://schemas.microsoft.com/appx/2013/manifest">
<Identity Name="zzz" Publisher="CN=zzz" Version="1.0.0.4" />
Run Code Online (Sandbox Code Playgroud)
我希望能够访问Windows.ApplicationModel
,但这不适合我
我在Windows操作系统下有一个压缩的二进制文件,我试图用R读取.到目前为止,它使用unz()函数与readBin()函数结合使用.
> bin.con <- unz(zip_path, file_in_zip, open = 'rb')
> readBin(bin.con,
"double",
n = byte_chunk,
size = 8L,
endian = "little")
> close(bin.con)
Run Code Online (Sandbox Code Playgroud)
其中zip_path是zip文件的路径,file_in_zip是zip文件中要读取的文件名,byte_chunk是我想要读取的字节数.
在我的用例中,readBin操作是循环的一部分,并逐渐读取整个二进制文件.但是,我很少想阅读所有内容,而且我经常知道我想要阅读的部分.不幸的是,readBin没有跳过前n个字节的start/skip参数.因此,我尝试用seek()有条件地替换readBin(),以跳过不需要的部分的实际读取.
当我尝试这个时,我收到一个错误:
> bin.con <- unz(zip_path, file_in_zip, open = 'rb')
> seek(bin.con, where = bytes_to_skip, origin = 'current')
Error in seek.connection(bin.con, where = bytes_to_skip, origin = "current") :
seek not enabled for this connection
> close(bin.con)
Run Code Online (Sandbox Code Playgroud)
到目前为止,我没有找到解决此错误的方法.类似的问题可以在这里找到(遗憾的是没有令人满意的答案):
互联网上的提示建议将open ='r'参数添加到unz()或完全删除open参数,但这仅适用于非二进制文件(因为默认为'r').人们还建议首先解压缩文件,但由于文件很大,这实际上是不可能的.
有没有办法解决二进制压缩文件或读取字节偏移量(可能通过Rcpp包使用C++)?
更新:
进一步的研究似乎表明zip文件中的seek() …
在R for Windows上,有两个函数可以调用系统命令.一方面,可以使用system()(或更新的system2()函数)来执行系统命令.另一方面,可以使用shell().在我看来,他们都应该这样做.他们之间有什么区别?
通过阅读文档,shell被描述为一个更加用户友好的系统包装器.我可以看到两者都有不同的参数,但我并没有真正看到调用shell更加用户友好的观点.除此之外,我看不出任何其他差异,甚至执行一些基本代码也会得到相同的结果(引号除外).
> system('ECHO "test"')
test
> shell('ECHO "test"')
"test"
Run Code Online (Sandbox Code Playgroud)
使用一个而不是另一个的论点是什么?
我经常在ggplot2图中使用theme_hc()主题(来自包ggthemes),结合scale_colour_pander()或scale_fill_pander().我想创建一个名为myTheme的自定义函数,它将这三个函数合二为一.
我尝试了以下内容
myTheme <- function(){
theme_hc() + scale_colour_pander() + scale_fill_pander()
}
data <- data.frame(x=1:2,y=3:4)
ggplot(data, aes(x=x, y=y)) + geom_point() + myTheme()
Run Code Online (Sandbox Code Playgroud)
但显然R首先在函数内部对此进行求值并给出错误:'错误:不知道如何将scale_colour_pander()添加到主题对象'.
然后我试了一下
myTheme <- function(){
ggplot() + theme_hc() + scale_colour_pander() + scale_fill_pander()
}
data <- data.frame(x=1:2,y=3:4)
ggplot(data, aes(x=x, y=y)) + geom_point() + myTheme()
Run Code Online (Sandbox Code Playgroud)
返回:'错误:不知道如何将o添加到图中'
有没有办法达到预期的效果,还是应该继续组合各个命令?
public void myTextBlock1_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
StackPanel mystack = new StackPanel() { Height = 100, Width = 200 };
TextBlock myTextBlock1 = new TextBlock()
{ Text = "Text Block", Width = 350, Height = 40, FontSize = 20,
VerticalAlignment = VerticalAlignment.Center,
TextAlignment = TextAlignment.Center,
HorizontalAlignment = HorizontalAlignment.Center, };
mystack.Children.Add(myTextBlock1);
}
for (int r = 0; r < m; r++)
{
TextBlock myTextBlockr = new TextBlock()
{ Text = "Text Block", Width = 350, Height = 40, FontSize = 20, …
Run Code Online (Sandbox Code Playgroud) 我正在尝试抓取这个网站。不幸的是,我想使用 rvest 抓取的数据隐藏在按钮(加号)后面。
我试着用 rvest 包来做,我使用以下代码:
library(rvest)
url <- 'https://transparency.entsoe.eu/generation/r2/actualGenerationPerGenerationUnit/show?name=&defaultValue=true&viewType=TABLE&areaType=BZN&atch=false&dateTime.dateTime=17.03.2017+00:00|UTC|DAYTIMERANGE&dateTime.endDateTime=17.03.2017+00:00|UTC|DAYTIMERANGE&area.values=CTY|10YBE----------2!BZN|10YBE----------2&productionType.values=B02&productionType.values=B03&productionType.values=B04&productionType.values=B05&productionType.values=B06&productionType.values=B07&productionType.values=B08&productionType.values=B09&productionType.values=B10&productionType.values=B11&productionType.values=B12&productionType.values=B13&productionType.values=B14&productionType.values=B15&productionType.values=B16&productionType.values=B17&productionType.values=B18&productionType.values=B19&productionType.values=B20&dateTime.timezone=UTC&dateTime.timezone_input=UTC&dv-datatable_length=100'
htmlpage <- html_session(url) %>%
read_html() %>%
html_nodes(".dv-value-cell") %>>%
html_table()
Run Code Online (Sandbox Code Playgroud)
“.dv-value-cell”是使用 SelectorGadget 从网站中提取的(在rvest 的一个小插曲中)。
但是,在我可以使用此代码之前,我仍然需要打开加号菜单。单击按钮之前,此子表中的数据不存在。因此,上面的代码将返回一个空值。
我使用了这个问题中描述的 Chrome 网络开发工具来监控当我点击按钮时会发生什么。根据该信息,我看到有对以下网址的请求(缩短为仅突出显示与原始网址的区别):
https://transparency.entsoe.eu/...&dateTime.timezone_input=UTC&dv-datatable-detail_22WAMERCO000010Y_22WAMERCO000008L_length=10&dv-datatable_length=50&detailId=22WAMERCO000010Y_22WAMERCO000008L
Run Code Online (Sandbox Code Playgroud)
如您所见,这是原始 url,但还有一个小的额外请求。但是,当我在浏览器中尝试此 url 时,它没有显示所需的结果。我一定错过了网站另外通过的东西。
根据 Chrome,此请求的结果正是我要查找的数据(右键单击 > 复制 > 复制结果)。所以应该有一种方法可以下载这个特定的数据。
我也发现了这个关于类似问题的问题,但不幸的是,该解决方案非常适合这种情况,并且没有给出一般性解释。
如何重现此浏览器请求,以便我收到相同的表?
我定义了两个类,它们可以成功添加两个自己的对象或一个数字和一个自己的对象。
a <- structure(list(val = 1), class = 'customClass1')
b <- structure(list(val = 1), class = 'customClass2')
`+.customClass1` <- function(e1, e2, ...){
val1 <- ifelse(is.numeric(e1), e1, e1$val)
val2 <- ifelse(is.numeric(e2), e2, e2$val)
val_res <- val1 + val2
print('customClass1')
return(structure(list(val = val_res), class = 'customClass1'))
}
`+.customClass2` <- function(e1, e2, ...){
val1 <- ifelse(is.numeric(e1), e1, e1$val)
val2 <- ifelse(is.numeric(e2), e2, e2$val)
val_res <- val1 + val2
print('customClass2')
return(structure(list(val = val_res), class = 'customClass1'))
}
print.customClass1 <- function(x, ...){
print(x$val)
}
print.customClass2 …
Run Code Online (Sandbox Code Playgroud) 我最近完成了(Windows)系统更新,现在我无法再使用 R 运行系统命令。我尝试重新安装 R 和所有使用过的软件包,但这并不能解决我的问题。重启也没有解决问题。
我刚刚发现,虽然 system() 和 system2() 命令不再起作用,但 shell() 命令确实起作用。
> system('ECHO "test"')
Warning message:
running command 'ECHO "test"' had status 127
> system2('ECHO "test"')
Warning message:
running command 'ECHO \"test\"' had status 127
> shell('ECHO "test"')
"test"
Run Code Online (Sandbox Code Playgroud)
文档描述 shell() 应该是 system() 的一个简单的用户友好的包装器。因此我不明白为什么 shell() 可以工作,但系统却不能。
在另一台 system() 函数仍然可以工作的计算机上,我检查了差异。Windows 版本、R 版本和软件包版本是相同的(至少根据干净会话中的 sessionInfo() 是相同的)。与我可以使用的 system() 相比,Shell() 指定了一些额外的参数:
我想在我的 Shiny 应用程序中显示纯文本,我找到了TextOutput和VerbatimTextOutput UI 元素。从文档中,我可以看到它们都转义 HTML。根据相同的文档,它们通常与不同的渲染功能结合使用,但这不会使 UI 元素有所不同。
他们有什么不同?
我正在尝试重载通用 S3 加法函数+
和乘法函数*
。
到目前为止,我成功地重载了所有 Ops(操作员)功能。
foo <- structure(list(value = 1, txt = 'a'), class = 'foo')
Ops.foo <- function(e1,e2){
structure(list(value = e1$value * e2$value,
txt = paste(e1$txt, e2$txt)),
class = 'foo')
}
foo + foo # value = 1, txt = "a a"
Run Code Online (Sandbox Code Playgroud)
但是,我找不到如何单独执行乘法(*)运算符的加(+)操作。我希望行为有所不同,具体取决于我是否添加或乘以新班级。
我已经尝试过以下方法:
+.foo <- function(e1,e2){
structure(list(value = e1$value * e2$value,
txt = paste(e1$txt, e2$txt)),
class = 'foo')
}
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误,说 .foo 不存在:'+.foo <- function(e1, e2) { 中的错误:找不到对象'.foo''
我也尝试过使用 UseMethod() 但这似乎只适用于 S4 类。
如何重载这些特定的 …
我有两个 Django(外键)字段 - FieldA 和 FieldB - 引用同一个类,但是不同的对象。然后我想将 FieldB 重命名为 FieldC。我在一次迁移中重命名了它(自动检测)。
然后我意识到我实际上需要一个与旧 FieldB 同名的新字段(也是同一类的外键)。因此,我创建了第二个迁移来添加新字段:FieldB。由于我刚刚重命名了另一个,我认为这不会给数据库带来任何问题。
我在本地使用 SQLite DB 进行开发,效果很好。当我将其推送到我们的 Postgres 数据库时,这返回了一个错误。
模型类
class ModelClass(Model):
field_a: ForeignClassA = models.ForeignKey(ForeignClassA, on_delete=models.SET_NULL, blank=True, null=True, related_name='FieldA')
# this one should be renamed to field_c after which I create another field with the same name and properties.
field_b: ForeignClassA = models.ForeignKey(ForeignClassA, on_delete=models.SET_NULL, blank=True, null=True, related_name='FieldB')
Run Code Online (Sandbox Code Playgroud)
迁移一:重命名
operations = [
migrations.RenameField(
model_name='modelname',
old_name='FieldB',
new_name='FieldC',
),]
Run Code Online (Sandbox Code Playgroud)
迁移二:添加字段
operations = [
migrations.AddField(
model_name='modelname',
name='FieldB',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='FieldB', to='app.othermodel'), …
Run Code Online (Sandbox Code Playgroud)