使用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) 我有一个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) 我有两个数据表,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) 我想使用AWS CLI查询存储桶的内容,看看是否存在特定文件,但存储桶包含数千个文件.如何过滤结果以仅显示与模式匹配的键名?例如:
aws s3api list-objects --bucket myBucketName --query "Contents[?Key==*mySearchPattern*]"
Run Code Online (Sandbox Code Playgroud) 我想计算一些摘要统计数据,并在数据表中按组执行不同的回归,并将结果以"宽"格式(即每组包含多列的一行).我可以通过多个步骤完成它,但似乎应该可以一次完成所有操作.
考虑这个示例数据:
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) 我正在使用从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) 如何创建包含嵌套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) 我有两个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) 我正在使用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) 我正在使用该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=" ./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) 我一直在使用这个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
如何根据数据集中的列覆盖图例指南的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) 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。rjson和RJSONIO产生类似的结果。r ×10
data.table ×5
aws-cli ×2
jmespath ×2
join ×2
amazon-ec2 ×1
amazon-s3 ×1
apache-spark ×1
cron ×1
dataframe ×1
ggplot2 ×1
grouping ×1
html ×1
json ×1
jsonlite ×1
legend ×1
line ×1
list ×1
merge ×1
nested ×1
pyspark ×1
python ×1
r-factor ×1
regression ×1
rvest ×1
size ×1
strptime ×1
subset ×1
timezone ×1
updates ×1
web-scraping ×1