这是一个奇怪的请求 - 但是否有可能 1)从 RStudio 中终止 R 会话但保持 RStudio 打开?...然后 2) 从 RStudio 中开始一个新的 R 会话?
我有一个2x2矩阵的列表,看起来像这样:
matlist=
list(structure(list(`1` = structure(c(8, 16, 3, 13), .Dim = c(2L, 2L)),
`2` = structure(c(6, 3, 0, 6), .Dim = c(2L, 2L)),
`3` = structure(c(39,55, 15, 11), .Dim = c(2L, 2L)),
`4` = structure(c(46, 53, 18,5), .Dim = c(2L, 2L)),
`5` = structure(c(14, 6, 1, 12), .Dim = c(2L,2L)),
`6` = structure(c(20, 6, 0, 12), .Dim = c(2L, 2L)),
`7` = structure(c(4, 1, 0, 4), .Dim = c(2L, 2L))),
.Names = c("1","2", "3", "4", "5", "6", "7" )),
structure(list(`1` = …Run Code Online (Sandbox Code Playgroud) 我试图让海龟在使用netlogo的ABM中互相争斗.目前,海龟随机移动每个蜱虫.我希望他们在每个蜱虫处随机找到另一只乌龟并与它们作斗争.最终,我会让他们只与邻居打架,但目前配对是随机的.
战斗的胜利者取决于每对海龟之间的获胜概率.我习惯在R中做这些模型,我将这些信息存储在矩阵中.例如
[[ 1 0.95 0.95 ]
[ 0.05 1 0.75 ]
[ 0.05 0.25 1 ]]
Run Code Online (Sandbox Code Playgroud)
在这里,第一排中的乌龟有可能在第2栏或第3栏中击败乌龟95%.第2排中的乌龟有5%可能赢得对柱A而75%有可能赢得对阵柱C. 我把1放在对角线上,但乌龟不能打自己.随着时间的推移,海龟会因战斗而失去能量 - 但这还没有被添加到模型中.
到目前为止,这是我的代码.当我挑选海龟找到"受害者"时,我希望能够从这个矩阵中选择一对获胜概率.例如,如果我选择turtle0和turtle3作为受害者,我想模拟一场"战斗",即turtleA是获胜率为95%的胜利者.
以这种方式使用矩阵是在netlogo中执行此操作的最佳方法吗?或者我使用其他编程语言偏差太大了?
extensions [matrix]
globals []
turtles-own [
energy ;; energy level
]
to setup
ca
let m matrix:from-row-list [[1 .95 .95] [.05 1 .75] [.05 .25 1] ]
print matrix:pretty-print-text m ;;just to check if matrix is correct
crt 3 [
setxy random-xcor random-ycor
set color 11
set shape "mouse side"
set size 2
]
ask patches [ …Run Code Online (Sandbox Code Playgroud) 我想从私有 GitHub 存储库下载 csv 文件并将其加载到当前环境。我不想简单地这样做,read_csv("raw_git_url")因为脚本将是公开的,复制/粘贴 raw_git_url 会让我留下filename.csv?token=AHh_HT3Aetc....,我不希望我的令牌号被公开。
相反,我获得了 GitHub 身份验证令牌并将其作为.Renviron文件放入我的工作目录中。
例如,我可以将文件写入磁盘/工作目录,如下所示:
library(httr)
url <- "https://raw.githubusercontent.com/username/privatereponame/master/dataname.csv"
GET(url, write_disk("mynew.csv", overwrite=TRUE))
Run Code Online (Sandbox Code Playgroud)
但我不想写副本 - 只需在当前环境中提供 csv 文件即可。我错过了一些明显的东西吗?更改write_disk....为readr::read_csv命令不起作用。
我可以做一件很奇怪的事情 - 像这样访问原始内容:
x=GET(url, authenticate(Sys.getenv("GITHUB_PAT1"), ""))
enc<-stringi::stri_enc_detect(content(x, "raw"))
content(x, "text", encoding = enc[[1]]$Encoding[1])
Run Code Online (Sandbox Code Playgroud)
...然后编写一些脚本将文本转换为 csv...但这感觉太啰嗦了。
当使用基数 R 时, rank()我们可以通过使用 来让它以相反的顺序对向量进行排序-。我想rank()在一个链中使用%>%(我有我的理由)。但是,是否有一种快速而简单的方法可以让它提供与rank(-x)在链中使用时相同的输出?我觉得这应该很简单,但我很想念它。
library(magrittr)
rank(c(5,7,14,3)) # [1] 2 3 4 1
rank(-c(5,7,14,3)) # [1] 3 2 1 4
c(5,7,14,3) %>% rank # [1] 2 3 4 1
c(5,7,14,3) %>% rank(-.) # [1] 2 3 4 1 Desired output would be [1] 3 2 1 4
Run Code Online (Sandbox Code Playgroud) 我试图根据各种规则转换矩阵.
拿这个矩阵,m:
x<-c(NA,0,0,0,0,0,4,NA,0,0,1,1,0,0,NA,0,2,4,4,1,3,NA,2,3,0,1,2,0,NA,1,0,0,0,0,0,NA)
m<-matrix(x,6,6, byrow=T)
rownames(m)<-colnames(m)<-LETTERS[1:6]
m
# A B C D E F
#A NA 0 0 0 0 0
#B 4 NA 0 0 1 1
#C 0 0 NA 0 2 4
#D 4 1 3 NA 2 3
#E 0 1 2 0 NA 1
#F 0 0 0 0 0 NA
Run Code Online (Sandbox Code Playgroud)
转换规则如下:
1)对角线应保持NA.
2)对于m [i,j]> m [j,i]的所有实例,则m [i,j]得到'1',m [j,i]得到0.
3)对于m [i,j] == m [j,i]并且两者都不等于0的所有实例,则m [i,j]和m [j,i]都应该被赋值为0.5
4)当m [i,j]和m [j,i]都等于0时,其中一个应该随机得到'1'而另一个应该得到'0'.
我可以通过这个计算来完成步骤1-3:
m1 <- (m > t(m))+0 …Run Code Online (Sandbox Code Playgroud) 我正在使用geom_tile和geom_text在中绘制以下数据ggplot2
mydf
Var1 Var2 dc1 bin
1 H G 0.93333333 0
2 G H 0.06666667 1
3 I G 0.80000000 0
4 G I 0.20000000 1
5 J G 0.33333333 1
6 G J 0.66666667 0
7 K G 0.57894737 1
8 G K 0.42105263 0
9 I H 0.80000000 0
10 H I 0.20000000 1
11 J H 0.25000000 0
12 H J 0.75000000 1
13 K H 0.20000000 0
14 H K 0.80000000 …Run Code Online (Sandbox Code Playgroud) 我在数据框中有不整齐的数据,看起来像这样.
在这里你可以在'团队'中看到一些足球队的名字.Name1-3是变量,列出了第一列中用于引用这些团队的不同名称.
team name1 name2 name3
1 Loughborough Loughborough
2 Luton Town Luton Town Luton
3 Macclesfield Macclesfield
4 Maidstone United Maidstone United
5 Manchester City Manchester City Man City
6 Manchester United Manchester United Newton Heath Man United
7 Mansfield Town Mansfield Town Mansfield
8 Merthyr Town Merthyr Town
Run Code Online (Sandbox Code Playgroud)
我的目标是使用team-name1,team-name2,team-name3配对将数据分成2列.我只想保留那些配对,其中有name1,name2或name3中的数据.
要做到这一点,我正在尝试tidyr的 - gather()
temp <- dat %>% gather(key, value, 2:4)
temp$key<-NULL
temp
Run Code Online (Sandbox Code Playgroud)
这给出了以下输出:
team value
1 Loughborough Loughborough
2 Luton Town Luton Town
3 Macclesfield Macclesfield
4 Maidstone United …Run Code Online (Sandbox Code Playgroud) 我正在尝试学习如何用ggvis图替换闪亮的静态图.用下面ui.R和server.R文件,我可以得到一个完全正常工作闪亮应用程序时,我的情节输出基地-R或ggplot.当我尝试使用ggvis时出现以下错误.
Error in handlers$add(handler, key, tail) : Key / already in use
我已经尝试将我的文件的位置更改为不同的目录,清除我的全局环境等.到目前为止似乎没有任何工作.
我试图重现最小的可重现的例子.以下是在我的机器上重现错误.我正在输入存储在与ui.R和server.R相同的文件夹中的csv文件中的数据.我添加了一些可用于重现csv文件的数据的dput().
这是一个例子:
ui.R
library(shiny)
library(dplyr)
library(ggvis)
# Define UI
shinyUI(pageWithSidebar(
# Application title
headerPanel("Cricket"),
sidebarPanel(
selectInput("hteam",
label = "Home Team",
choices = c("All Teams", "Australia", "England"), selected = "All teams"),
br()
),
mainPanel(
plotOutput("CrickPlot")
)
))
Run Code Online (Sandbox Code Playgroud)
server.R
library(shiny)
library(dplyr)
library(ggvis)
shinyServer(function(input, output) {
#### Input raw data
df <- read.csv("mydf.csv", stringsAsFactors=F, header=T)
df1 <- reactive({
hometeam <- input$hteam
if(input$hteam != "All Teams"){ df …Run Code Online (Sandbox Code Playgroud) 我的数据如下所示:
duration obs another
1 1.801760 ID: 10 DAY: 6/10/13 S orange
2 1.868500 ID: 10 DAY: 6/10/13 S green
3 0.233562 ID: 10 DAY: 6/10/13 S yellow
4 5.538760 ID:96 DAY: 6/8/13 T yellow
5 3.436700 ID:96 DAY: 6/8/13 T blue
6 0.533856 ID:96 DAY: 6/8/13 T pink
7 2.302250 ID:96 DAY: 6/8/13 T orange
8 2.779420 ID:96 DAY: 6/8/13 T green
Run Code Online (Sandbox Code Playgroud)
我只包含了3个变量,但实际上我的数据有很多.我的问题是看丑陋的"obs"变量.我从另一个人那里收到了这些数据,这些人不一致地将这些信息输入到他们正在使用的软件中.
'obs'包含三条信息: - id(ID:10,ID:96等) - 日期(M/D/Y) - 标识符(S或T)
我想分割这些信息并提取ID号(10或96),日期(例如6/8/13)和标识符(S或T).
为此,我尝试使用strsplit进行以下操作:
temp<-strsplit(as.character(df$obs), " ")
mat<-matrix(unlist(temp), ncol=5, byrow=TRUE)
Run Code Online (Sandbox Code Playgroud)
我认为这可以像我的实际数据那样工作,我有130,000个观察结果,我没有意识到某些观察结果存在id在"ID:"和数字之间没有空格的问题.例如,在上面的数据中,"ID:96"在冒号和数字之间没有空格.显然,我收到了这条警告信息: …