使用时注意到以下内容'[<-'.我成功地替换了元素,但没有在向量中添加元素.
例:
VarX <- integer()
VarX[1] <- 11
`[<-`(VarX, 2, 22)
VarX
# [1] 11
# Expected the value of VarX to be:
# [1] 11 22
# Also tried:
`[<-`(VarX, i=2, value=22)
VarX
# [1] 11
Run Code Online (Sandbox Code Playgroud)
但是,如果索引中已存在值,则会替换该值.
VarX <- integer()
VarX[1] <- 11
VarX[2] <- 99
VarX
# [1] 11 99
`[<-`(VarX, 2, 22)
VarX
# [1] 11 22
Run Code Online (Sandbox Code Playgroud)
我只是简单地使用了语法错误,或者这是否符合预期?任何进一步了解这里发生的事情将不胜感激.
请注意,除了更好地理解语言之外,这里没有具体的目标.
似乎行为与最初分配对象的值有关.例如,当分配给所述值VarX是1:2相对于c(1, 2)的行为[<-(VarX, 2, …
是否有比以下更有效的查询
DT[, list(length(unique(OrderNo)) ),customerID]
Run Code Online (Sandbox Code Playgroud)
使用客户ID,订单号和产品系列项细化LONG格式表,这意味着如果客户在该交易中购买了多个项目,则会有重复的行具有相同的订单ID.
试图找出独特的购买方式.length()按客户ID计算所有订单ID,包括重复项,仅查找唯一编号.
这是一些虚拟代码.理想情况下,我正在寻找的是使用第一个查询的输出unique().
df <- data.frame(
customerID=as.factor(c(rep("A",3),rep("B",4))),
product=as.factor(c(rep("widget",2),rep("otherstuff",5))),
orderID=as.factor(c("xyz","xyz","abd","qwe","rty","yui","poi")),
OrderDate=as.Date(c("2013-07-01","2013-07-01","2013-07-03","2013-06-01","2013-06-02","2013-06-03","2013-07-01"))
)
DT.eg <- as.data.table(df)
#Gives unique order counts
DT.eg[, list(orderlength = length(unique(orderID)) ),customerID]
#Gives counts of all orders by customer
DT.eg[,.SD, keyby=list(orderID, customerID)][, .N, by=customerID]
^
|
This should be .N, not .SD ~ R.S.
Run Code Online (Sandbox Code Playgroud) 我想根据组修改构面背景的颜色.我不确定这是否可行.具体来说,我使用facet_grid(不facet_wrap)多层.
## Sample data
dat <- mtcars
## Add in some colors based on the data
dat$facet_fill_color <- c("red", "green", "blue", "yellow", "orange")[dat$gear]
## Create main plot
library(ggplot2)
P <- ggplot(dat, aes(x=cyl, y=wt)) + geom_point(aes(fill=hp)) + facet_grid(gear+carb ~ .)
## I can easily cahnge the background using:
P + theme(strip.background = element_rect(fill="red"))
Run Code Online (Sandbox Code Playgroud)
但是,我想为不同的组改变颜色.理想情况下,如下所示(当然不起作用)
P + theme(strip.background = element_rect(fill=dat$facet_fill_color))
P + theme(strip.background = element_rect(aes(fill=facet_fill_color)))
Run Code Online (Sandbox Code Playgroud)
小平面背景可以有多种颜色吗?
(相关,但不是上面的实际答案: ggplot2:基于数据集中变量的facet_wrap条带颜色)
该by函数是否生成一次只增长一个元素的列表?
我需要处理一个数据框,其中大约有4M观测值按因子列分组.情况类似于以下示例:
> # Make 4M rows of data
> x = data.frame(col1=1:4000000, col2=10000001:14000000)
> # Make a factor
> x[,"f"] = x[,"col1"] - x[,"col1"] %% 5
>
> head(x)
col1 col2 f
1 1 10000001 0
2 2 10000002 0
3 3 10000003 0
4 4 10000004 0
5 5 10000005 5
6 6 10000006 5
Run Code Online (Sandbox Code Playgroud)
现在,tapply其中一个列需要一段合理的时间:
> t1 = Sys.time()
> z = tapply(x[, 1], x[, "f"], mean)
> Sys.time() - t1
Time difference …Run Code Online (Sandbox Code Playgroud) 我有一个2维单位网格,以及一组以任何有理数开始和结束的线段.我需要一种有效的方法来计算线路经过的网格单元.例如,行:
从(2.1,3.9)到(3.8,4.8)通过具有左下点(2,3),(2,4)和(3,4)的网格单元.
是否有快速,有效的方法从线路的端点计算这些象限?
我将在R工作,但Python或伪代码的答案也会起作用.谢谢!
我发现自己经常写下以下两行.有简洁的替代方案吗?
newObj <- vals
names(newObj) <- nams
# This works, but is ugly and not necessarily preferred
'names<-'(newObj <- vals, nams)
Run Code Online (Sandbox Code Playgroud)
我正在寻找类似的东西(当然这不起作用):
newObj <- c(nams = vals)
Run Code Online (Sandbox Code Playgroud)
将它包装在一个函数中也是一个选项,但我想知道功能是否已经存在.
样本数据
vals <- c(1, 2, 3)
nams <- c("A", "B", "C")
Run Code Online (Sandbox Code Playgroud) 鉴于几个.xls具有不同页数的文件,我读他们到R使用read.xls从gdata包.我有两个相关的问题(解决第二个问题应解决第一个问题):
.xls文件将有多少张纸,实际上这个值会因文件而异.现在,要解决(1),我正在使用try()并迭代工作表编号,直到我遇到错误.
如何获取工作表名称列表以便我可以迭代它们?
我已经获得了excel文件(.xlsx),其中单元格的格式是我需要捕获的相关信息.感兴趣的关键格式是(1)单元格颜色和(2)边框(左+右,全框或不存在).
是否可以将其读入R?
我正在使用大型时间序列data.table,60*B*illion行X 50列
对于三个特定列,我想添加一个相应的T/F列,指示idCol每次事件发生时的第一次
换句话说,对于ColumnA,新列将是
DT[, flag.ColumnA := dateCol==min(dateCol)
, by=list(idCol, ColumnA)]
Run Code Online (Sandbox Code Playgroud)
但是:经常有联系,关系min(dateCol)的解决方案是只标记一个元素TRUE,剩下的FALSE.这导致以下方法
## Set key to {idCol, dateCol} so that the first row in each group
## is the unique element in that group that should be set to TRUE
setkey(DT, idCol, dateCol)
DT[, flag.ColumnA := FALSE]
DT[, { DT[ .I[[1L]], flag.ColumnA := TRUE] } # braces here are just for easier reading
, by=list(idCol, ColumnA)]
Run Code Online (Sandbox Code Playgroud)
问题是第二种方法将运行时间增加了3倍以上,而第一种方法每列需要花费一个多小时(在相对较快的盒子上)
我还考虑在方法1中手动解析关系,但这比上述两种方法慢.
有关如何更有效地完成此任务的任何建议? 以下示例数据
DT["ID_01"] …Run Code Online (Sandbox Code Playgroud) 这个让我难过。我执行了一个简单的Shell脚本,该脚本可以在我的Linux(AWS aka CentOS)计算机上正常运行,但是在我的Mac OS X计算机上崩溃。原来\,字符串命令中的转义()需要一个额外的转义字符(\\)。
有人可以启发我了解我在这里缺少的内容吗,即,在需要此功能的Mac上运行R脚本又有什么用呢?
打电话说时,*未*观察到该行为python3 -c ..
在两台机器上,我正在使用bash,特别是/bin/bash
注意:Mac是R:3.5.1 vs 3.4.1的稍晚版本,但是如果这是罪魁祸首,我将感到非常惊讶。有人可以确认吗?
R --vanilla -e 'cat(" Hello \n World \n ")'
Run Code Online (Sandbox Code Playgroud)
上面的代码在CentOS机器上可以很好地运行,但是需要附加的转义符(\\n而不是\n)才能正确执行。(底部示例)
为了进行参考/比较,以下python命令在我测试过的每台Mac OS X,CentOS计算机上均可以相同地工作。
python3 -c 'print("Hello \n World")'
Run Code Online (Sandbox Code Playgroud)
有关详细信息,这是比较两台计算机上的两个命令的输出
1. R --vanilla -e 'cat(" Hello \n World \n ")'
2. R --vanilla -e 'cat(" Hello \\n World \\n ")'
Run Code Online (Sandbox Code Playgroud)
R --vanilla -e 'cat(" Hello \n World …Run Code Online (Sandbox Code Playgroud) r ×10
data.table ×2
xls ×2
amazon-linux ×1
assign ×1
benchmarking ×1
facet ×1
gdata ×1
ggplot2 ×1
linux ×1
macos ×1
optimization ×1
pseudocode ×1
python ×1
sapply ×1
shell ×1
tapply ×1
xlsx ×1