小编Pet*_*900的帖子

R闪亮 - 弹出窗口可选

我正在创建一个查询SQL数据库的闪亮应用程序.如果查询的数据在两个日期有条目,我想警告用户.此外,我希望用户能够选择要查询的数据集.这是一个例子:

服务器

# Create example data

set.seed(10)
MeasurementA <- rnorm(1000, 5, 2)
MeasurementB <- rnorm(1000, 5, 2)
Wafer <- rep(c(1:100), each=10)
ID <- rep(c(101:200), each=10)
Batch <- rep(LETTERS[seq(from=1, to =10)], each=100)
Date <- rep(seq(as.Date("2001-01-01"), length.out = 100, by="1 day"), each=10)

# Add data for Wafer 1 with a new date

W2 <- rep(1, each=10)
ID2 <- rep(101, each=10)
Batch2 <- rep("A", each=10)
Date2 <- rep(as.Date("2001-04-11"), each=10)
MA2 <- rnorm(10, 5, 2)
MB2 <- rnorm(10, 5, 2)

df <- data.frame(Batch, Wafer, …
Run Code Online (Sandbox Code Playgroud)

r rmysql shiny

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

在不定义序列的情况下更改轴断点 - ggplot

有没有办法在ggplot中设置中断步长而不定义序列.例如:

x <- 1:10
y <- 1:10

df <- data.frame(x, y)

# Plot with auto scale
ggplot(df, aes(x,y)) + geom_point()

# Plot with breaks defined by sequence
ggplot(df, aes(x,y)) + geom_point() +
  scale_y_continuous(breaks = seq(0,10,1))

# Plot with automatic sequence for breaks
ggplot(df, aes(x,y)) + geom_point() +
  scale_y_continuous(breaks = seq(min(df$y),max(df$y),1))

# Does this exist?
ggplot(df, aes(x,y)) + geom_point() +
  scale_y_continuous(break_step = 1)
Run Code Online (Sandbox Code Playgroud)

你可能会说我是懒惰,但也出现了几次,我不得不改变minmax我的极限seq由于添加的错误吧.所以我只想说...使用x的中断大小,具有自动缩放限制.

r ggplot2

6
推荐指数
1
解决办法
2475
查看次数

来自闪亮应用程序的写入权限

这是对此的后续问题(write.csv permissonshiny server - R)。

我正在使用一个闪亮的应用程序来搜索和保存一些数据。我在获取文件夹权限时遇到问题。读完这篇文章(https://groups.google.com/forum/#!topic/shiny-discuss/srWETT6uL-I)后,我设法通过运行 RStudio 服务器 shell 来解决:

sudo chown闪亮:闪亮/path_to_app/path_to_data

然而,这似乎不再对我有用了。当我单击应用程序中的“保存数据”按钮时,我收到了熟悉的错误:

cannot open compressed file 'mutec/mutec_data.rds', probable reason 'Permission denied
Run Code Online (Sandbox Code Playgroud)

所以我读了这篇文章(https://askubuntu.com/questions/528411/how-do-you-view-file-permissions)来尝试找出文件夹权限。我明白了:

Mutec_data$ ls -l ./mutec 总计 4 -rw-r--r-- 1 pdowns pdowns 446 4 月 17 日 12:22 mutec_data.rds

我正在努力解释这一点。是不是意味着用户pdowns可以读写?是否应该有一个具有读写权限的“闪亮”用户?

这是我的 saveData 函数:

outputDir <- "mutec"

saveData <- function(data) {
  # Write the file to the local system
  saveRDS(
    object = data,
    file = file.path(outputDir, "mutec_data.rds") 

  )
}
Run Code Online (Sandbox Code Playgroud)

更新

当我检查允许我写入的文件夹的权限时,我得到以下信息:

PPL040_baseline$ ls -l …

r shiny

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

使用带有 cronR 调度的 here 包的正确方法

我一直在使用这个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

cron r

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

R中的相对路径:如何避免我的计算机被点燃?

不久前,我正在阅读一篇关于改进项目工作流程的文章。建议不要使用setwd,否则我的电脑会烧毁:

如果 R 脚本的第一行是

setwd("C:\Users\jenny\path\that\only\I\have")

我会进入你的办公室并点燃你的计算机。

我开始使用这个here包,它运行得很好,直到我开始使用cronR. 问完这个问题后,我的笔记本电脑再次受到纵火威胁:

如果你的 #rstats 脚本的第一行是 wd <- here(),我将进入你的实验室并点燃你的计算机。

由于担心笔记本电脑的安全,我开始使用答案中建议的方法来获取相对文件路径:

wd <- Sys.getenv("HOME")
wd <- file.path(wd, "projects", "my_proj") 
Run Code Online (Sandbox Code Playgroud)

这对我有用,但对与我一起工作但没有相同projects目录的人不起作用。所以现在我很困惑。获取相对文件路径以便项目可以移植的最安全/最好的方法是什么?

有很多选项:12。我的要求是获取函数/脚本并读取/写入 csv 文件。也许rprojroot套餐是最好的选择?

r

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

我的R脚本是否相同?

我认为这一定是重复但我似乎无法在堆栈上找到答案.有没有办法比较同一个wd中的两个R脚本,看它们是否相同?

就像是:

a <- source("script1.R")
b <- source("script2.R")

identical(a, b)
Run Code Online (Sandbox Code Playgroud)

我不仅仅指每个脚本中的函数,还包括注释等所有其他内容.

谢谢

r

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

将 renv 用于私有 GitLab 包

我有一个本地 GitLab 帐户,其中包含一个 R 包,可以通过以下方式安装:

devtools::install_git( 
  url = "http://my-gitlab/my-projects/package",
  credentials = git2r::cred_user_pass("user", "pass")
)
Run Code Online (Sandbox Code Playgroud)

当我运行renv::init()包源时未知。入门文章确实详细介绍了如何设置函数来处理私有存储库,但在使用devtools和时我无法弄清楚 GitLab 的情况git2r::cred_user_pass。我可以将GIT_USER和存储GIT_PASSWORD.Renviron文件中,但我不确定如何强制init使用这些凭据的用户devtools::install_git使用该功能。我确实尝试过,但后来出现错误:

fatal: could not read Username for 'http://my-gitlab': No such device or address
Run Code Online (Sandbox Code Playgroud)

他们提供的所有示例选项都使用 GitLab 令牌进行身份验证:

# use a named list directly
options(renv.auth = list(
  MyPackage = list(GITHUB_PAT = "<pat>")
))
Run Code Online (Sandbox Code Playgroud)

也许有更好的方法从本地 GitLab 存储库安装,可以更好地配合使用renv

r devtools gitlab install.packages renv

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

合并重复列并连接列名称

我相信这一定是重复的.说我有这个:

stage <- seq(1,3,1)
exp1 <- c("A","B","C")
exp2 <- c("A","B","C")
exp3 <- c(NA, "B","C")
exp4 <- c("D","B","C")
exp5 <- c("A","B","C")
exp6 <- c(NA, "B","C")

df <- data.frame(stage, exp1, exp2, exp3, exp4, exp5, exp6)

  stage exp1 exp2 exp3 exp4 exp5 exp6
1     1    A    A <NA>    D    A <NA>
2     2    B    B    B    B    B    B
3     3    C    C    C    C    C    C
Run Code Online (Sandbox Code Playgroud)

我想组合所有重复的列并通过连接列名来显示它.我能找到重复的列:

df[duplicated(lapply(df, summary))]

exp2 exp5 exp6
1    A    A <NA>
2    B    B    B …
Run Code Online (Sandbox Code Playgroud)

r duplicates dataframe

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

使用数据表同时重命名多个因子

我喜欢数据表并使用它来有条件地重命名或添加因子.但是,我似乎不能一次做多个因素.这是一个例子:

a <- rep(c("A", "B", "C", "D"), each=3)
b <- 1:12
df <- data.frame(a,b)
DT <- data.table(df)
Run Code Online (Sandbox Code Playgroud)

现在添加新列"New",对于列"a"中的所有"A"等于"z"

DT[a=="A", New:="z"]
Run Code Online (Sandbox Code Playgroud)

这很好用.现在,如果我想改变说"A"和"C"等于"z":

DT[a==c("A", "C"), New:="z"]
Run Code Online (Sandbox Code Playgroud)

给我有趣的答案:

dput(DT)
structure(list(a = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 
3L, 4L, 4L, 4L), .Label = c("A", "B", "C", "D"), class = "factor"), 
    b = 1:12, New = c("z", NA, "z", NA, NA, NA, NA, "z", NA, 
    NA, NA, NA)), .Names = c("a", "b", "New"), row.names = c(NA, 
-12L), class = c("data.table", "data.frame"), .internal.selfref …
Run Code Online (Sandbox Code Playgroud)

r data.table

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

按组添加 id,在 R 中重置为 1

我确信这一定是一个骗局,但我就是无法让它发挥作用。我想向数据框中添加 ID 列,对于一列中的每个唯一值,该列重置为 1。最好的描述方式是举例:

gr1 <- c("A","A","A","B","B","B")
gr2 <- c(1,1,2,3,4,4)

df <- data.frame(gr1, gr2)
Run Code Online (Sandbox Code Playgroud)

期望的输出:

id <- c(1,1,2,1,2,2)
df <- cbind(df, id)
Run Code Online (Sandbox Code Playgroud)

id 标记 gr1 的每个子集中 gr2 的唯一值。当 gr1 从 A 更改为 B 时,id 重置为 1。我已阅读此内容(基于两列 R 分配 ID),但这不是我想要的。我不想添加排名函数(我认为),因为我希望我的领带在 gr1 中都具有相同的 id,例如

df2 <- df %>% group_by(gr1) %>% mutate(id=rank(gr2, ties.method="max")) 
Run Code Online (Sandbox Code Playgroud)

把我的头撞到墙上。任何指示都会有很大的帮助。

r

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