小编tak*_*kje的帖子

从Package中检索当前应用程序版本

虽然我可以使用以下代码获得程序集版本

        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,但这不适合我

c# windows-store windows-store-apps prism-storeapps uwp

36
推荐指数
1
解决办法
2万
查看次数

从压缩文件和已知起始位置(字节偏移)读取R中的二进制文件

我在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() …

binary r rcpp

10
推荐指数
1
解决办法
906
查看次数

system()和shell()之间的区别

在R for Windows上,有两个函数可以调用系统命令.一方面,可以使用system()(或更新的system2()函数)来执行系统命令.另一方面,可以使用shell().在我看来,他们都应该这样做.他们之间有什么区别?

通过阅读文档,shell被描述为一个更加用户友好的系统包装器.我可以看到两者都有不同的参数,但我并没有真正看到调用shell更加用户友好的观点.除此之外,我看不出任何其他差异,甚至执行一些基本代码也会得到相同的结果(引号除外).

> system('ECHO "test"')
test
> shell('ECHO "test"')
"test"
Run Code Online (Sandbox Code Playgroud)

使用一个而不是另一个的论点是什么?

windows r

8
推荐指数
1
解决办法
1732
查看次数

创建结合主题和颜色的自定义ggplot2函数

我经常在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添加到图中'

有没有办法达到预期的效果,还是应该继续组合各个命令?

r ggplot2

6
推荐指数
1
解决办法
1048
查看次数

如何为动态创建的 TextBlock 提供点击(或点击)事件

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)

c# xaml windows-phone-8 uwp

5
推荐指数
0
解决办法
1386
查看次数

抓取需要点击按钮的网站

我正在尝试抓取这个网站。不幸的是,我想使用 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,此请求的结果正是我要查找的数据(右键单击 > 复制 > 复制结果)。所以应该有一种方法可以下载这个特定的数据。

我也发现了这个关于类似问题的问题,但不幸的是,该解决方案非常适合这种情况,并且没有给出一般性解释。

如何重现此浏览器请求,以便我收到相同的表?

r web-scraping rvest

5
推荐指数
1
解决办法
6932
查看次数

多个类的 S3 运算符重载

我定义了两个类,它们可以成功添加两个自己的对象或一个数字和一个自己的对象。

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)

r operator-overloading r-s3

5
推荐指数
1
解决办法
915
查看次数

system() 返回错误,但 shell() 有效

我最近完成了(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() 指定了一些额外的参数:

  • shell指定要使用的 shell。“详细信息”部分告诉我,这将检查两个环境变量:R_SHELL 和 COMSPEC。R_SHELL 未在两个系统(全局和本地)上定义。COMSPEC 已定义,并在两个系统上引用 cmd.exe(位于同一文件夹中)。我已经检查并通过此可执行文件运行纯命令。
  • flag不知道这是做什么的,但它与 system() 命令不同。据我了解,更改它的唯一原因是使用不同的 shell/操作系统(例如 Linux 上的 Bash)。
  • shell() 和 system() 的intern设置为 FALSE。
  • shell() …

windows r

4
推荐指数
1
解决办法
1059
查看次数

R Shiny 中的 TextOutput 和 VerbatimTextOutput 有什么区别

我想在我的 Shiny 应用程序中显示纯文本,我找到了TextOutputVerbatimTextOutput UI 元素。从文档中,我可以看到它们都转义 HTML。根据相同的文档,它们通常与不同的渲染功能结合使用,但这不会使 UI 元素有所不同。

他们有什么不同?

r shiny

4
推荐指数
1
解决办法
3161
查看次数

重载S3通用加法和乘法函数

我正在尝试重载通用 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 类。

如何重载这些特定的 …

r

2
推荐指数
1
解决办法
76
查看次数

Django 重命名字段并创建同名的新字段会返回 psycopg2 错误:DuplicateTable:关系已存在

我有两个 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)

python django postgresql django-migrations

0
推荐指数
1
解决办法
1966
查看次数