我遇到过这个问题.我想确定下个100年每个月的第二个星期日的日子.这是我的代码
x <- seq(as.Date("2014-9-01"),as.Date("2014-9-01")+100*365.25,1)
y <- format(x,"%Y%m")
xx <- NULL
for(i in unique(y)) {
w <- which(y == i)
xx <- c(xx,x[w[which(weekdays(x[w]) == "Sunday")[2]]])
}
head(xx)
tail(xx)
Run Code Online (Sandbox Code Playgroud)
我已经实现了它,但我不得不使用循环.如何使用矢量化代码更有效地执行此操作?
通常,假设存在具有n个不同值的向量v,如何为每个不同的值分配增加值,对于每个不同的值,从1开始为1.也就是说,假设我从向量开始
v <- c(1,1,1,2,2,2,2,3,4,4)
Run Code Online (Sandbox Code Playgroud)
我想生成一个"运行计数器" v.counter,其中包含v中的唯一值
v.counter <- c(1,2,3,1,2,3,4,1,1,2)
Run Code Online (Sandbox Code Playgroud)
显然我可以写一个循环来做到这一点.但是我如何使用矢量化代码呢?
如何在特定版本中"修复"包?在朱莉娅?
因此,如果包破坏现有代码,我们就不必更新包.
我试图对字符串向量进行排序,请参阅下面的MWE
# example R code
N=1e8; K=100
set.seed(1)
id3 = sample(sprintf("i%07d",1:(N/K)), N, TRUE)
pt = proc.time()
sort(id3)
data.table::timetaken(pt)
Run Code Online (Sandbox Code Playgroud)
并且它在我的电脑上没有完成将近5分钟,所以我取消了它.
我注意到在Julia中,我的笔记本电脑上可以在大约90秒内执行相同的操作
# example Julia cde
const M=100_000_000; const K=100
srand(1)
svec1 = rand(["i"*dec(k,7) for k in 1:M÷K], M)
@time sort(svec1)
Run Code Online (Sandbox Code Playgroud) if (!require("pacman")) install.packages("pacman")
pacman::p_load(tidyverse, lubridate)
# Example of sample dates - these are to be used to cross check if date exists within the range
Sample.Dates = tibble(
ID = "ID",
Round = 1:3,
Start.Date = dmy(c("03/12/2018","10/12/2018","17/12/2018")),
End.Date = dmy(c("09/12/2018","16/12/2018","23/12/2018")))
# Reference dates for a particular player - "John". Need to cross check the date against Sample.Dates and attach round, start and end date columns
Ref.Dates = tibble(
ID= "ID",
Date = seq.Date(ymd("2018-12-05"), ymd("2018-12-31") , by = "day"),
Player = …Run Code Online (Sandbox Code Playgroud) I have created a string
x = "ls"
Run Code Online (Sandbox Code Playgroud)
and I wanted to execute x as a string from Julia. How do I do that?
ls is just a contrivded example I actually wanted to execute a more complicated command, so please don't tell me pwd() works.
The actual command might be split c:/data/Performance_All/Performance_2000Q1.txt -n l/3 -d /c/data/Performance_All_split/Performance_2000Q1.txt
我有一段代码可以运行,并且我想在函数的出口处执行一些代码,例如关闭连接。
fn(io) = begin
write(io)
# do lots of stuff which can fail
...
# want close connection
on_exit(()->close(io))
end
Run Code Online (Sandbox Code Playgroud) 我有一个 CSV 文件,其标题包含 2000 多列。我希望只读取第一行,然后将其拆分,并在新行中打印每个列名称,以便我可以 grep 来查看列是否存在。我被困住了
head -n 1 file.csv | ### what do do here? ### | grep var_i_want
Run Code Online (Sandbox Code Playgroud) 我正在CMD ["R", "some_optoins"]docker映像中运行,并且我想禁止R启动消息的打印,例如R version 3.6.1 (2019-07-05),这很长并且会增加日志大小。
有命令行选项可以抑制这种情况吗?
说我有一个数据框 df
import pandas as pd
df = pd.DataFrame({"id":["a", "b", "aa", "aaa", "bbb", "a"]})
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我想计算列 id的字符串长度的计数。
在这个例子中,有 3 个id长度为 1 的字符串,1 个长度为 2 的字符串,2 个长度为 3 的字符串。 所以我想要一个反映这些信息的表
str_length count
1 3
2 1
3 2
Run Code Online (Sandbox Code Playgroud)
对数百万行执行此操作的最有效方法是什么?
这是我能想到的最好的,但我听说使用apply很慢
str_length count
1 3
2 1
3 2
Run Code Online (Sandbox Code Playgroud)
这产生了。
str_length count
1 1 3
2 2 1
3 3 2
Run Code Online (Sandbox Code Playgroud) 当我install.packages("somepkg")在 Linux(主要是 Ubuntu)上运行时,安装过程涉及从源代码构建 R 包,这可能很耗时。此外,由于缺少与开发相关的 Linux 软件包,它也很容易失败。
有没有办法像在 Windows 上一样安装已编译的二进制文件?听说可以,但是找不到容易理解的资源。希望通过在这里提问,我会让答案(如果存在)更易于搜索。