小编dnl*_*rky的帖子

使用aws-cli 1.3.6在其他数据中列出实例名称

使用aws-cli 1.3.6我试图用名称和状态获得一个简单的ec2实例表.我一直在查看--query和JMESpath文档,我已经能够选择Map的"Value"项,其中"Key"项等于Name.这对于获取实例名称很有用.因此,下面的代码似乎工作

aws ec2 describe-instances --output table --query 'Reservations[].Instances[].Tags[?Key==`Name`].Value'
Run Code Online (Sandbox Code Playgroud)

并提供这个:

-------------------
|DescribeInstances|
+-----------------+
|  Name1          |
|  Name2          |
+-----------------+
Run Code Online (Sandbox Code Playgroud)

但是,如果我想添加状态,事情就会像我预期的那样得到.运用

aws ec2 describe-instances --output table --query 'Reservations[].Instances[].[Tags[?Key==`Name`].Value,State.Name]'
Run Code Online (Sandbox Code Playgroud)

提供

-------------------
|DescribeInstances|
+-----------------+
|  Name1          |
|  stopped        |
|  Name2          |
|  stopped        |
+-----------------+
Run Code Online (Sandbox Code Playgroud)

而不是具有名称和状态的两列表.

如果我们将输出转换为JSON,我们可以看到Tags选项返回一个列表(单元素列表),这可能是问题所在:

[
    [
        [
            "Name1"
        ],
        "stopped"
    ],
    [
        [
            "Name2"
        ],
        "stopped"
    ]
]
Run Code Online (Sandbox Code Playgroud)

我无法通过选择第一个元素将此列表转换为标量.这个,不起作用.返回一个空列表作为名称.

aws ec2 describe-instances --output json --query 'Reservations[].Instances[].[Tags[?Key==`Name`].Value[0],State.Name]'
Run Code Online (Sandbox Code Playgroud)

和此一样

aws ec2 describe-instances --output json --query 'Reservations[].Instances[].[Tags[?Key==`Name`].Value[][0],State.Name]'
Run Code Online (Sandbox Code Playgroud)

我解决这个问题的唯一方法是通过join函数.因为我只期待一个元素,所以可以,但我似乎有点hacky.

aws ec2 …
Run Code Online (Sandbox Code Playgroud)

amazon-ec2 amazon-web-services aws-cli jmespath

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

在DataFrame中用空/空值替换空字符串

我有一个Spark 1.5.0 DataFrame,null在同一列中混合了空字符串.我想将所有列中的所有空字符串转换为null(None在Python中).DataFrame可能有数百列,所以我试图避免每列的硬编码操作.

请参阅下面的我的尝试,这会导致错误.

from pyspark.sql import SQLContext
sqlContext = SQLContext(sc)

## Create a test DataFrame
testDF = sqlContext.createDataFrame([Row(col1='foo', col2=1), Row(col1='', col2=2), Row(col1=None, col2='')])
testDF.show()
## +----+----+
## |col1|col2|
## +----+----+
## | foo|   1|
## |    |   2|
## |null|null|
## +----+----+

## Try to replace an empty string with None/null
testDF.replace('', None).show()
## ValueError: value should be a float, int, long, string, list, or tuple

## A string value of …
Run Code Online (Sandbox Code Playgroud)

python dataframe apache-spark apache-spark-sql pyspark

21
推荐指数
4
解决办法
3万
查看次数

根据join更新data.table的子集

我有两个数据表,DT1和DT2:

set.seed(1)
DT1<-data.table(id1=rep(1:3,2),id2=sample(letters,6), v1=rnorm(6), key="id2")
DT1
##    id1 id2         v1
## 1:   2   e  0.7383247
## 2:   1   g  1.5952808
## 3:   2   j  0.3295078
## 4:   3   n -0.8204684
## 5:   3   s  0.5757814
## 6:   1   u  0.4874291

DT2<-data.table(id2=c("n","u"), v1=0, key="id2")
DT2
##    id2 v1
## 1:   n  0
## 2:   u  0
Run Code Online (Sandbox Code Playgroud)

我想基于与DT2的连接更新DT1,但仅针对DT1的子集.例如,对于DT1[id1==3],我希望第4行中的v1的值更新,如下面的结果:

DT1
##    id1 id2         v1
## 1:   2   e  0.7383247
## 2:   1   g  1.5952808
## 3:   2   j  0.3295078
## 4: …
Run Code Online (Sandbox Code Playgroud)

join r subset assignment-operator data.table

17
推荐指数
2
解决办法
6217
查看次数

过滤S3列表对象结果以查找与模式匹配的键

我想使用AWS CLI查询存储桶的内容,看看是否存在特定文件,但存储桶包含数千个文件.如何过滤结果以仅显示与模式匹配的键名?例如:

aws s3api list-objects --bucket myBucketName --query "Contents[?Key==*mySearchPattern*]"
Run Code Online (Sandbox Code Playgroud)

amazon-s3 pattern-matching aws-cli jmespath

17
推荐指数
1
解决办法
3万
查看次数

在data.table中按组进行回归和汇总统计

我想计算一些摘要统计数据,并在数据表中按组执行不同的回归,并将结果以"宽"格式(即每组包含多列的一行).我可以通过多个步骤完成它,但似乎应该可以一次完成所有操作.

考虑这个示例数据:

set.seed=46984
dt <- data.table(ID=c(rep('Frank',5),rep('Tony',5),rep('Ed',5)), y=rnorm(15), x=rnorm(15), z=rnorm(15),key="ID")
dt
#       ID          y          x            z
# 1:    Ed  0.2129400 -0.3024061  0.845335632
# 2:    Ed  0.4850342 -0.5159197 -0.087965415
# 3:    Ed  1.8917489  1.7803220  0.760465271
# 4:    Ed -0.4330460 -2.1720944  0.973812545
# 5:    Ed  0.7685060  0.7947470  1.279761200
# 6: Frank  0.4978475 -0.2906851  0.568101004
# 7: Frank  0.6323386 -0.5596599  1.537133025
# 8: Frank -0.8243218 -0.4354885  0.057818033
# 9: Frank  1.2402488  0.3229422  0.005995249
#10: Frank  0.2436210 -0.2651422  0.349532173
#11:  Tony  0.4179568  0.1418463 …
Run Code Online (Sandbox Code Playgroud)

grouping regression r list data.table

11
推荐指数
1
解决办法
4092
查看次数

使用特殊时区格式的strptime%z

我正在使用从Teradata导出的.csv数据.有几列原本是带时区的时间戳,所以在加载R中的.csv之后,我想将这些列(作为字符串加载)转换为POSIXlt或POSIXct.我正在使用strptime,但.csv文件中的时区格式与strptime预期的不匹配.例如,它希望-0400但.csv具有-04:00冒号分隔小时和分钟的格式.

我可以删除结肠,但这是一个额外的步骤和复杂性我想尽可能避免.有没有办法让strptime时区(%z)使用不同的格式?

这是一个例子:

## Example data:
x <- c("2011-10-12 22:17:13.860746-04:00", "2011-10-12 22:17:13.860746+00:00")
format <- "%Y-%m-%d %H:%M:%OS%z"

## Doesn't work:
strptime(x,format)
## [1] NA NA

## Ignores the timezone:
as.POSIXct(x)
## [1] "2011-10-12 22:17:13 EDT" "2011-10-12 22:17:13 EDT"

## Remove the last colon:
x2 <- gsub("(.*):", "\\1", x)
x2
## [1] "2011-10-12 22:17:13.860746-0400" "2011-10-12 22:17:13.860746+0000"

## This works, but requires extra processing (removing the colon)
strptime(x2,format)
## [1] "2011-10-12 …
Run Code Online (Sandbox Code Playgroud)

timezone r strptime string-to-datetime

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

通过将行折叠为新的data.tables来创建嵌套的data.tables

如何创建包含嵌套data.tables的data.table?

set.seed(7908)
dt <- data.table(x=1:5)[,list(y=letters[1:x],z=sample(1:100,x)),by=x]

dt
##     x y  z
##  1: 1 a 13
##  2: 2 a 27
##  3: 2 b 87
##  4: 3 a 85
##  5: 3 b 98
##  6: 3 c  1
##  7: 4 a 53
##  8: 4 b 81
##  9: 4 c 64
## 10: 4 d 45
## 11: 5 a 28
## 12: 5 b 26
## 13: 5 c 52
## 14: 5 d …
Run Code Online (Sandbox Code Playgroud)

nested r data.table

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

与data.tables进行多个连接/合并

我有两个data.tables,DT和L:

> DT = data.table(x=rep(c("a","b","c"),each=3), y=c(1,3,6), v=1:9,key="x")
> L=data.table(yv=c(1L:8L,12L),lu=c(letters[8:1],letters[12]),key="yv")

> DT
   x y v
1: a 1 1
2: a 3 2
3: a 6 3
4: b 1 4
5: b 3 5
6: b 6 6
7: c 1 7
8: c 3 8
9: c 6 9

> L
   yv lu
1:  1  h
2:  2  g
3:  3  f
4:  4  e
5:  5  d
6:  6  c
7:  7  b
8:  8  a
9: 12 …
Run Code Online (Sandbox Code Playgroud)

merge join r multiple-tables data.table

7
推荐指数
1
解决办法
4046
查看次数

涉及因素的data.table赋值

我正在使用data.table(1.8.9)和:=运算符来更新另一个表中的值.要更新的表(dt1)有许多因子列,带有更新的表(dt2)具有类似的列,其值可能不存在于另一个表中.如果dt2中的列是字符,我会收到一条错误消息,但是当我将它们分解时,我会得到不正确的值.

如何在不将所有因子首先转换为字符的情况下更新表格?

这是一个简化的例子:

library(data.table)

set.seed(3957)

## Create some sample data
## Note column y is a factor
dt1<-data.table(x=1:10,y=factor(sample(letters,10)))
dt1

##      x y
##  1:  1 m
##  2:  2 z
##  3:  3 t
##  4:  4 b
##  5:  5 l
##  6:  6 a
##  7:  7 s
##  8:  8 y
##  9:  9 q
## 10: 10 i

setkey(dt1,x)

set.seed(9068)

## Create a second table that will be used to update the …
Run Code Online (Sandbox Code Playgroud)

r updates assignment-operator r-factor data.table

7
推荐指数
1
解决办法
1027
查看次数

使用rvest跟随"相对路径"的"下一步"链接

我正在使用该rvest软件包从http://www.radiolab.org/series/podcasts页面中获取信息.抓第一页后,我想按照底部的"下一步"链接,抓第二页,移到第三页等.

以下行给出错误:

html_session("http://www.radiolab.org/series/podcasts") %>% follow_link("Next")
## Navigating to 
##     
##       ./2/  
## Error in parseURI(u) : cannot parse URI 
##     
##       ./2/  
Run Code Online (Sandbox Code Playgroud)

检查HTML显示"./ /"周围有一些额外的错误,rvest显然不喜欢:

html("http://www.radiolab.org/series/podcasts") %>% html_node(".pagefooter-next a")
## <a href="&#10;    &#10;      ./2/  ">Next</a> 

.Last.value %>% html_attrs()
##                   href 
## "\n    \n      ./2/  "
Run Code Online (Sandbox Code Playgroud)

问题1: 如何rvest::follow_link像浏览器一样正确处理此链接?(我可以手动抓取"下一步"链接并使用正则表达式进行清理,但更喜欢利用随附的自动化功能rvest.)


follow_link代码的最后,它调用jump_to.所以我尝试了以下方法:

html_session("http://www.radiolab.org/series/podcasts") %>% jump_to("./2/")
## <session> http://www.radiolab.org/series/2/
##   Status: 404
##   Type:   text/html; charset=utf-8
##   Size:   10744
## …
Run Code Online (Sandbox Code Playgroud)

html r web-scraping rvest

7
推荐指数
1
解决办法
2591
查看次数

使用带有 cronR 调度的 here 包的正确方法

我一直在使用这个here 来让我的项目更便携。除了我cronR用来安排我的一些脚本之外,它的效果很好。当我my_script.R从 Rstudio运行时,我收到一条消息library(here)

here() starts at /home/pd/projects/my_proj
Run Code Online (Sandbox Code Playgroud)

当我设置script.R运行 using 时,cronR我收到一条不同的消息:

here() starts at /home/pd
Run Code Online (Sandbox Code Playgroud)

my_schedule.cron是存储的地方。理想情况下,我想保持my_schedule.cron原样。my_script.R除了保存数据之外,我可以从日志中看到运行良好的日志,因为使用的路径here()不正确。无论如何,是否可以在从终端或终端运行here时获得检测项目目录的功能?my_script.RcronR

cron r

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

修改颜色比例图例指南以匹配ggplot2中的线条大小

如何根据数据集中的列覆盖图例指南的aes大小值ggplot2

请参阅此示例(编辑2:添加了试用版C,并将行大小更改为使用对数比例):

library(data.table)
set.seed(26798)

dt<-rbind(data.table(Trial="A",Value=rweibull(1000,1.0,0.5)),
      data.table(Trial="B",Value=rweibull(100,1.2,0.75)),
      data.table(Trial="C",Value=rweibull(10,1.3,0.8)))

# Add a count and something like a cumulative distribution:
dt2<-dt[order(Trial,Value),list(Value,N=.N),by=Trial][,list(Value,N,y=1-cumsum(N)/sum(N)),by=Trial]
dt2
##      Trial        Value    N     y
##   1:     A 0.0003628745 1000 0.999
##   2:     A 0.0013002615 1000 0.998
##   3:     A 0.0017002173 1000 0.997
##   4:     A 0.0022597343 1000 0.996
##   5:     A 0.0026608082 1000 0.995
##  ---                              
##1096:     B 1.6821827814  100 0.040
##1097:     B 2.2431595707  100 0.030
##1098:     B 2.5122479833  100 0.020
##1099:     B 2.5519954416 …
Run Code Online (Sandbox Code Playgroud)

size r line legend ggplot2

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

jsonlite中使用fromJSON转换JSON时的有效数字

fromJSON我正在使用包中的JSON 将 JSON 转换为 R 对象jsonlite,但数值正在四舍五入。如何控制转换后数值的精度?

例子

library(jsonlite)
fromJSON('{"lon": -86.143278324353244}')
## $lon
## [1] -86.14328

## Desired output is -86.143278324353244
Run Code Online (Sandbox Code Playgroud)

查看代码jsonlite,我将函数调用追溯到parse.c中的 R_parse

.Call(jsonlite:::R_parse, "-86.143278324353244", FALSE)
## [1] -86.14328
Run Code Online (Sandbox Code Playgroud)

其他尝试

  • fromJSON有一个digits参数,但它不是 的有效参数toJSON
  • 其他包如rjsonRJSONIO产生类似的结果。

json r jsonlite

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