小编Jon*_*nas的帖子

rlang :: sym在匿名函数中

我最近注意到这rlang::sym似乎不适用于匿名函数,我不明白为什么.这是一个例子,它非常笨拙和丑陋,但我认为它说明了这一点

require(tidyverse)
data <- tibble(x1 = letters[1:3],
               x2 = letters[4:6],
               val = 1:3)

get_it <- function(a, b){
    data %>%
        mutate(y1 = !!rlang::sym(a)) %>%
        mutate(y2 = !!rlang::sym(b)) %>%
        select(y1, y2, val)
}
get_it("x1", "x2")
Run Code Online (Sandbox Code Playgroud)

这定义了一些玩具数据和一个(可怕的)函数,它基本上根据列名重命名列.现在我可以为a和b的不同组合做同样的事情:

d <- tibble(x = c("x1", "x2"),
            y = c("x2", "x1"))
d %>% mutate(tmp = map2(x, y, get_it))
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试使用匿名函数执行完全相同的操作,则它不起作用:

d %>% mutate(tmp = map2(x, y, function(a, b){
data %>%
    mutate(y1 = !!rlang::sym(a)) %>%
    mutate(y2 = !!rlang::sym(b)) %>%
    select(y1, y2, val)
}))
Run Code Online (Sandbox Code Playgroud)

object 'a' not found …

r nse tidyeval rlang

14
推荐指数
1
解决办法
761
查看次数

R scoping:禁止函数中的全局变量

如果在R函数中使用全局变量,有没有办法抛出警告(并失败..)?我认为这样可以避免意外行为......例如

sUm <- 10
sum <- function(x,y){
sum = x+y
return(sUm)
}
Run Code Online (Sandbox Code Playgroud)

由于"拼写错误"的回报,该功能将永远返回10.而不是返回sUm它的值应该失败.

scope global r

11
推荐指数
2
解决办法
1856
查看次数

Conda:从 github 安装 R 包

对于 conda yml 文件,可以使用 pip 作为从 github 定义 python 依赖项

name: sample_env
channels:
dependencies:
   - python=2.7
   - pip:
     - git+https://github.com/my/repository
Run Code Online (Sandbox Code Playgroud)

有没有办法对 R 包使用类似的方法(例如使用 devtools)使用类似的方法

name: sample_env
channels:
dependencies:
   - R=3.6
   - devtools:
     - git+https://github.com/my/repository
Run Code Online (Sandbox Code Playgroud)

yaml r pip devtools conda

10
推荐指数
0
解决办法
693
查看次数

R:不要为VennDiagram写日志文件

我使用R(版本3.1.2)和包VennDiagram(版本1.6.16).

自从我上次更新VennDiagram包创建一个名为一个日志文件VennDiagramDATE_TIME.log(与DATETIME是日期和时间创建)在当前的工作目录.

怎么能压制这个日志文件?或者在图表完成后立即删除它?我在手册中没有找到任何相关内容......

r venn-diagram

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

read.table读取数字作为因素

我有以下示例文件:

"id";"PCA0";"PCA1";"PCA2"
1;6.142741644872954;1.2075898020608253;1.8946959360032403   
2;-0.5329026419681557;-8.586870627925729;4.510113575138726
Run Code Online (Sandbox Code Playgroud)

当我尝试阅读时:

d <- read.table("file.csv", sep=";", header=T)
Run Code Online (Sandbox Code Playgroud)

id是一个整数列,PCA0一个数字,所有后续列都是因子

class(d$iid)
[1] "integer"
class(d$PCA0)
[1] "numeric"
class(d$PCA1)
[1] "factor"
class(d$PCA2)
[1] "factor"
Run Code Online (Sandbox Code Playgroud)

为什么其他列也不是数字?

我知道如何转换列,但我希望我的脚本能够在不手动转换类型的情况下工作.为什么R不识别数字列?

r

7
推荐指数
2
解决办法
5482
查看次数

字体令人敬畏地显示亚洲标志而不是图标

我正在尝试使用Font Awesome而不是任何图标,它只显示任何亚洲标志.我为web服务器下载了字体awsome.我在3种不同的浏览器(firefox,opera和chromium)中尝试了这个,但它总是一样的.

可在此处查看测试页:http://2weitweitweg.de/test.html

以下是它的截图:http://postimg.org/image/9yh5p0p97/

它是否在您的浏览器中显示标志?问题与浏览器或服务器有关吗?我该如何解决?

再见

firefox opera icons chromium font-awesome

5
推荐指数
2
解决办法
2万
查看次数

lme4模型功能概述(lmerTest)

如果有以下数据

d = data.frame(out=rnorm(10), explain=rnorm(10), age=rnorm(10), sex=sample(c("M", "F"), size=10, replace=T), group=rep(c(1:5), 2))
f = as.formula("out ~ explain + age + sex + (1|group)")
Run Code Online (Sandbox Code Playgroud)

并且想要使用lme4拟合线性模型

require(lme4)
require(lmerTest)
m  = lmer(f, d)
s  = summary(m)
Run Code Online (Sandbox Code Playgroud)

这很好用......但是如果模型适合于另一个函数

gglm = function(form, data){
    lm = lmer(form, data=data)
    return(lm)
}
m2 = gglm(f, d)
s2 = summary(m2)
Run Code Online (Sandbox Code Playgroud)

我收到一个错误.

summary from lme4 is returned
some computational error has occurred in lmerTest
Run Code Online (Sandbox Code Playgroud)

显然,这是因为模型的拟合是通过一个被调用的对象完成的,该对象data在外部范围内是不可见的.所以,如果我这样做,data = d我会得到与以前相同的结果.但是,如果我这样做

data = data.frame(out=rnorm(10), explain=rnorm(10), age=rnorm(10), sex=sample(c("M", "F"), size=10, replace=T), …
Run Code Online (Sandbox Code Playgroud)

r summary lme4

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

在 R 中为 tikzdevice 栅格化 ggplot 图像

我使用 R 分析数据,使用 ggplot 创建绘图,使用 tikzDevice 打印它们,最后使用 Latex 来创建报告。问题是由于乳胶的内存限制,具有许多点的大图会失败。我在这里找到了https://github.com/yihui/tikzDevice/issues/103一个在打印 tikz 文件之前光栅化绘图的解决方案,它允许单独打印点和文本。

require(png)
require(ggplot2)
require(tikzDevice)

## generate data
n=1000000; x=rnorm(n); y=rnorm(n)

## first try primitive
tikz("test.tex",standAlone=TRUE)
plot(x,y)
dev.off()
## fails due to memory
system("pdflatex test.tex")


## rasterise points first
png("inner.png",width=8,height=6,units="in",res=300,bg="transparent")
par(mar=c(0,0,0,0))
plot.new(); plot.window(range(x), range(y))
usr <- par("usr")
points(x,y)
dev.off()
# create tikz file with rasterised points
im <- readPNG("inner.png",native=TRUE)
tikz("test.tex",7,6,standAlone=TRUE)
plot.new()
plot.window(usr[1:2],usr[3:4],xaxs="i",yaxs="i")
rasterImage(im, usr[1],usr[3],usr[2],usr[4])
axis(1); axis(2); box(); title(xlab="x",ylab="y")
dev.off()
## this works
system("pdflatex test.tex")


## now with ggplot
p …
Run Code Online (Sandbox Code Playgroud)

r rasterizing ggplot2 tikzdevice

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

bnlearn的并行化(并行包)

我正在使用该R软件包bnlearn来估计贝叶斯网络结构.它使用parallel包内置并行化.但是,这不起作用.

使用联机帮助页中的示例bnlearn::parallel integration:

library(parallel)
library(bnlearn)

cl = makeCluster(2)

# check it works.
clusterEvalQ(cl, runif(10))    # -> this works

data(learning.test)
res = gs(learning.test, cluster = cl)
Run Code Online (Sandbox Code Playgroud)

我在这里得到错误 "Error in check.cluster(cluster) : cluster is not a valid cluster object."

有人知道怎么做这个吗?

parallel-processing r

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

glm模型的一个p值

我正在寻找一种获得一个p值的方法,该值描述了glm模型的拟合优度.以下是手册lm页中略有修改的示例:

 ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
 trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
 conf<- c(rnorm(mean=-1, sd=1, n=10), rnorm(mean=1, sd=1, n=10)) 

 group <- gl(2,10,20, labels=c("Ctl","Trt"))
 weight <- c(ctl, trt)
 lm.D9 <- lm(weight ~ group + conf)
Run Code Online (Sandbox Code Playgroud)

summary(lm.D9)一个得到

Call:
lm(formula = weight ~ group + conf)

Residuals:
     Min       1Q   Median       3Q      Max 
-1.17619 -0.40373 -0.05262  0.24987  1.40777 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  4.97416    0.25153  19.775  3.6e-13 ***
groupTrt    -0.23724    0.41117  -0.577    0.572    
conf        -0.07044    0.13725  -0.513    0.614    
---
Signif. codes:  0 …
Run Code Online (Sandbox Code Playgroud)

regression r lm glm p-value

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

byobu在ssh会话中重命名Windows

我连接到远程计算机,ssh并在远程计算机上启动byobu会话。每当我在byobu窗口中更改目录时,该窗口都会重命名为username@remote-pc:~/.../.../...。当我使用F8该名称重命名窗口时,该名称将一直保留到下一个窗口cd

我该如何预防?

ssh byobu

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