我正在尝试Rcpp在我的 M1 Mac 上使用 R 中需要的软件包,但在购买这台计算机后我一直无法启动并运行它。我将其更新到蒙特利,希望这能解决一些安装问题,但事实并非如此。我尝试从此页面Rcpp运行检查,但出现以下错误:
> Rcpp::sourceCpp("~/github/helloworld.cpp")\nRun Code Online (Sandbox Code Playgroud)\nld: warning: directory not found for option \'-L/opt/R/arm64/gfortran/lib/gcc/aarch64-apple-darwin20.2.0/11.0.0\'\nld: warning: directory not found for option \'-L/opt/R/arm64/gfortran/lib\'\nld: library not found for -lgfortran\nclang: error: linker command failed with exit code 1 (use -v to see invocation)\nmake: *** [sourceCpp_4.so] Error 1\nclang++ -arch arm64 -std=gnu++14 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I../inst/include -I"/Library/Frameworks/R.framework/Versions/4.1-arm64/Resources/library/Rcpp/include" -I"/Library/Frameworks/R.framework/Versions/4.1-arm64/Resources/library/RcppArmadillo/include" -I"/Users/afredston/github" -I/opt/R/arm64/include -fPIC -falign-functions=64 -Wall -g -O2 -c helloworld.cpp -o helloworld.o\nclang++ -arch arm64 -std=gnu++14 -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined …Run Code Online (Sandbox Code Playgroud) 我所在的组织拥有许多内部 R 包,这些包都是多年前编写的。这些文件存储为.zip在 R 3.x 下的 Windows 上构建的存档。它们无法在不重新构建的情况下加载到 Linux 或 macOS 或 R 4.y 下。不幸的是,我无权访问包源。他们输给了时间……
我想获取这些二进制文件,提取源代码,并根据当前的最佳实践(版本控制、roxygen2、testthat等)重新打包它。最好的方法是什么?
我已经通过以下方式解决了其中一个二进制文件:
.R文件。.R文件中,以便重现浏览器中显示的帮助页面。我部分陷入(1),因为某些功能是 S4 通用的。dput(<name>)给出new("standardGeneric", ...)而不是简单的function定义。否则,这个过程相当简单,但非常耗时。
有没有办法以编程方式从 R 包二进制文件“反向工程”源文件,同时正确处理 S4 通用函数、类和方法?
在这个问题得到解决之前,组织中的每个人都将停留在 R 3.6 上。
我目前没有可用的移动设备,但需要切换到 GitHub 的 2FA。
我目前知道的唯一方法是购买 Skype 电话号码并将其用于 SMS 身份验证。但这需要花钱,而且存在我不小心让订阅失效的风险。
是否有不需要移动设备或有效电话号码的免费身份验证方法?
我根本不是 R 专家,并且收到此错误:
初始化时出错(...):尝试使用零长度变量名调用:%>% ... filter.data.frame -> filter_rows -> -> 初始化 -> .Call
通过日志,我将其范围缩小到这行代码:
qb_stats_all <- subset(qb_stats_all, select = -c(num)) %>% filter(player != 'Player')
Run Code Online (Sandbox Code Playgroud)
这是之前的完整代码:
library(dplyr)
library(htmltab)
# Set earliest quarterback draft year
beginning_qb_year <- 1985
# Set most recent quarterback draft year
ending_qb_year <- 2020
# Scrape NFL quarterback career data
url_start <- paste0('https://www.pro-football-reference.com/play-index/psl_finder.cgi?request=1&match=combined&year_min=', beginning_qb_year, '&year_max=2020&season_start=1&season_end=-1&pos%5B%5D=qb&draft_year_min=1936&draft_year_max=2020&draft_slot_min=1&draft_slot_max=500&draft_pick_in_round=pick_overall&conference=any&draft_pos%5B%5D=qb&draft_pos%5B%5D=rb&draft_pos%5B%5D=wr&draft_pos%5B%5D=te&draft_pos%5B%5D=e&draft_pos%5B%5D=t&draft_pos%5B%5D=g&draft_pos%5B%5D=c&draft_pos%5B%5D=ol&draft_pos%5B%5D=dt&draft_pos%5B%5D=de&draft_pos%5B%5D=dl&draft_pos%5B%5D=ilb&draft_pos%5B%5D=olb&draft_pos%5B%5D=lb&draft_pos%5B%5D=cb&draft_pos%5B%5D=s&draft_pos%5B%5D=db&draft_pos%5B%5D=k&draft_pos%5B%5D=p&c5val=1.0&order_by=pass_att&offset=')
offset_seq <- seq(0, 500, 100)
qb_stats_all <- data.frame()
for (url_end in offset_seq) {
print(paste0('Scraping from QB #', url_end, '!'))
url <- paste0(url_start, url_end) …Run Code Online (Sandbox Code Playgroud) 我有一个有点复杂的数据结构(嵌套列表)y,定义为:
x <- list(
list(1, "a", 2, "b", 0.1),
list(3, "c", 4, "d", 0.2),
list(5, "e", 6, "f", 0.3)
)
y <- rep(list(x), 10)
Run Code Online (Sandbox Code Playgroud)
我还有一个数据框df,定义为:
df <- data.frame(
x1 = c( 0.33, 1.67, -0.62, -0.56, 0.17, 0.73, 0.59, 0.56, -0.22, 1.49),
x2 = c(-0.82, 1.22, 0.65, 0.54, -2.26, 1.21, -0.44, -0.92, -0.56, 0.50),
x3 = c(-0.16, 0.49, -0.82, -0.71, 0.13, 1.22, 1.23, -0.01, -1.11, 0.97)
)
Run Code Online (Sandbox Code Playgroud)
其中列名并不重要。
我想将所有和替换y[[i]][[j]][[5]]为。我的 Python/Julia 大脑在循环中工作得最好,因此我通过循环,然后循环 的元素(每个 的副本)来完成此操作,如下所示:df[[i, j]] …
假设我有一个代表函数名称的“symbol”类型的对象。例如:
nm <- quote(mean)
Run Code Online (Sandbox Code Playgroud)
我想构造一个函数f,其主体使用由符号 命名的函数nm。例如:
f <- function(x, do = c("something", "nothing")) {
switch(match.arg(do), something = mean(x), nothing = x)
}
Run Code Online (Sandbox Code Playgroud)
我想以相同的方式构造这个函数,这意味着我不会满意以下方法:
factory <- function(name) {
func <- match.fun(name)
function(x, do = c("something", "nothing")) {
switch(match.arg(do), something = func(x), nothing = x)
}
}
g <- factory(nm)
Run Code Online (Sandbox Code Playgroud)
因为身体g不是body(f),环境g也不是environment(f)。
我考虑过的一种方法是bquote:
h <- eval(bquote({
function(x, do = c("something", "nothing")) {
switch(match.arg(do), …Run Code Online (Sandbox Code Playgroud) 我发现 R 代码中最昂贵的部分是以下sapply调用:
L <- 2000
score <- sample(1:3, L, replace = TRUE)
d <- c(0, -1, 0.5)
sapply(1:L, function(i) sum(d[1:score[i]]))
Run Code Online (Sandbox Code Playgroud)
d该调用获取从索引 1 到索引 的向量的总和score[i],循环遍历变量中的每个元素score。挑战在于该代码作为优化例程的一部分进行评估并运行很多很多次。
我正在尝试以矢量化方式执行相同的计算,但有点困难。我想我可以创建一个这样的矩阵:
d.mat <- matrix(rep(d, L), nrow = L, byrow = TRUE)
Run Code Online (Sandbox Code Playgroud)
然后以某种方式计算rowSums(d.mat)从第 1 列到score[i]row 中的列i。有谁知道有一种方法可以在不循环的情况下做到这一点?sapply我想,如果可能的话,考虑到rowSums以下基准中的相对速度,这将比 快得多:
library(microbenchmark)
microbenchmark(sapply(1:L, function(i) sum(d[1:score[i]])),
rowSums(d.mat),
times = 100)
Run Code Online (Sandbox Code Playgroud)
或者也许有人看到了更好的第三种选择。
我正在制作一个数据操作包,它在幕后使用了一些其他库。假设我的数据总是有一个类"custom",并且我有一个custom_select()选择某些列的函数。
我希望我的包具有很少的依赖项,但也具有与dplyr. 由于多个dplyr函数是泛型,因此我可以对不同的输入类型使用相同的函数名称。在我的情况下,我可以创建一个方法select.custom(),以便用户可以传递一个data.frame或一个custom对象select(),并且两者都可以工作。
现在根据我的理解,这需要放入,dplyr因为Imports我需要访问它的select()泛型。我想避免这样做,因为我想限制硬依赖项的数量。
我想到的场景是:
\ndplyr,然后他们可以使用select()类的数据custom,它应该可以工作dplyr安装/加载,我不想强迫他们拥有它,所以他们可以使用该功能custom_select()。理想情况下,我想把它放进dplyr去Suggests,这样它就不是绝对必要的,但如果用户有的话它会添加一些东西。
custom.R:
#\' @export\n#\' @importFrom dplyr select\ncustom_select <- function(data, select) {\n print("Hello, world!")\n}\n\n#\' @export\nselect.custom <- custom_select\nRun Code Online (Sandbox Code Playgroud)\nNAMESPACE:
# Generated by …Run Code Online (Sandbox Code Playgroud) chebpol包已存档在 CRAN 上,因此我正在寻找
chebpol::ipol(..., method = "polyharmonic").
我正在尝试在四维、规则、均匀网格上插入(和推断)一个函数,但缺少一些点。上面提到的chebpol::ipol函数非常适合:
known <- data.table::data.table(
a = c(1, 1, 1, 1, 2, 2, 2, 2),
b = c(1, 1, 2, 2, 1, 1, 2, 2),
c = c(1, 1, 2, 3, 2, 2, 3, 4),
d = c(1, 2, 3, 4, 1, 2, 3, 4)
)
known[, score := a + b + c + d] # example values
f <- chebpol::ipol(
val = known[, score],
knots = t(as.matrix(known[, …Run Code Online (Sandbox Code Playgroud) 我有一个非常复杂的文件夹组织,这是它的简化版本。
|--Folder0 --- Folder0.1
|
home---|--Folder1 --- Folder1.1 --- Folder1.2
|
|--Folder2 --- Folder2.1
Run Code Online (Sandbox Code Playgroud)
我想列出第二级文件夹(Folder0.1、Folder1.1、Folder2.1)中的所有 .xlsx 文件。
非常感谢任何帮助。
请不要想当然地认为文件夹的名称。只是为了简单起见,我这样称呼它们。他们的名字是随机的。
我正在尝试使用参数为 1 的指数分布生成 1000 个数字。
将种子值设置为 1 后,我尝试了rexp(1000, 1)和replicate(1000, rexp(1, 1)),但是得到的两个向量的中位数不同。
我预计这两个表达式生成的向量是相同的,因为它们都是从相同种子值下的相同指数分布中采样的。
rexp(1000, 1)和 和有什么区别replicate(1000, rexp(1, 1))?在实践中我应该使用哪个?
这是我尝试过的代码:
> options(digits = 2)
> set.seed(1)
>
> a <- rexp(1000, 1)
> b <- replicate(1000, rexp(1, 1))
>
> median(a)
[1] 0.73
> median(b)
[1] 0.68
Run Code Online (Sandbox Code Playgroud) r ×11
r-package ×3
build ×1
dataframe ×1
exp ×1
function ×1
github ×1
loops ×1
macos ×1
nested-lists ×1
r-s3 ×1
replicate ×1
simulation ×1
statistics ×1