小编Luk*_*ham的帖子

与 grepl R 完全匹配

我正在尝试使用 grepl 从数据框中提取某些记录。

这是基于两列结果和名称之间的比较。这个变量是这样构建的,但是对于同一个单词,我有多个数字(超过 30 个),所以当我使用 grepl 表达式来获取例如 Word1 时,我也会得到我想要避免的结果,如 Word12。

有想法该怎么解决这个吗?

Names <- c("Word1")
colnames(Names) <- name
Results <- c("Word1", "Word11", "Word12", "Word15")
Records <- c("ThisIsTheResultIWant", "notThis", "notThis", "notThis") 
Relationships <- data.frame(Results, Records)

Relationships <- subset(Relationships, grepl(paste(Names$name, collapse = "|"), Relationships$Results))
Run Code Online (Sandbox Code Playgroud)

这不起作用,如果我使用fixed = TRUE它根本不返回任何结果(这很奇怪)。我也尝试将名称部分与这样的其他数字连接,但没有成功:

Relationships <- subset(Relationships, grepl(paste(paste(Names$name, '3', sep = ""), collapse = "|"), Relationships$Results))
Run Code Online (Sandbox Code Playgroud)

由于我正在连接,因此我不太确定如何使用 \b 来强制执行完全匹配。

有什么建议?

r grepl

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

如何删除/更改R中的图形geom_vline中的标签?

从图中使用这个例子我试图绘制两条垂直线来表示平均值和中位数.

可重复的代码

library(plotly)

# data
df1 <- data.frame(cond = factor( rep(c("A","B"), each=200) ),
                  rating = c(rnorm(200),rnorm(200, mean=.8)))

df2 <- data.frame(x=c(.5,1),cond=factor(c("A","B")))

# graph
ggplot(data=df1, aes(x=rating, fill=cond)) +
  geom_vline(aes(xintercept=mean(rating, na.rm=T))
             , color="red", linetype="dashed", size=1, name="average") +
  geom_vline(aes(xintercept=median(rating, na.rm=T))
             , color="blue", linetype="dashed", size=1, name="median") +
  geom_histogram(binwidth=.5, position="dodge")

ggplotly()
Run Code Online (Sandbox Code Playgroud)

问题

我想要抑制红色文本'average'旁边显示的y值-2.2.但是,我希望文本"平均"显示在下面的屏幕截图中.即我只想压制我已经穿过黑色十字架的标签.同样的问题适用于中线.

如何隐藏-2.2?

我的非工作尝试

#plot
gg <- ggplot(data=df1, aes(x=rating, fill=cond)) +
    geom_vline(aes(xintercept=mean(rating, na.rm=T))
               , color="red", linetype="dashed", size=1, name="average")+
    geom_vline(aes(xintercept=median(rating, na.rm=T))
               , color="blue", linetype="dashed", size=1, name="median") +
    geom_histogram(binwidth=.5, position="dodge")

p <- plotly_build(gg)
# p$data[[1]]$y[1:2] …
Run Code Online (Sandbox Code Playgroud)

plot r ggplot2 plotly

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

是否可以使用readr中的write_csv()编写stdout?

我正在使用bash管道数据,Rscript所以: cat random.csv | Rscript test.R arg >| delete.csv

我的目标是使用Rreadr来读取stdin和写stdout.我在这里找到了stdin答案.

test.R

#!/usr/bin/Rscript
suppressMessages(library(readr))

args  <- commandArgs(trailingOnly = TRUE)

df.in <- read_csv(file("stdin"))

write_csv(df.in, path = stdout())
Run Code Online (Sandbox Code Playgroud)

上面的代码在命令行中生成以下错误消息:

错误信息

Error in path.expand(path) : invalid 'path' argument
Calls: write_csv -> write_delim -> normalizePath -> path.expand
Execution halted
Run Code Online (Sandbox Code Playgroud)

我也试过write_csv(df.in, file("stdout"))write_csv(df.in, stdout())生成相同的错误消息.

为了重现性,这里是一个链接 random.csv

世界卫生组织对全球结核病报告的变量定义[43kb]

bash r readr

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

如何有效检查Spark Dataframe中是否包含单词列表?

我正在尝试使用PySpark数据帧尽可能高效地执行以下操作。我有一个数据框,其中的一列包含文本和我要过滤行的单词列表。所以:

数据框看起来像这样

df:
col1    col2   col_with_text
a       b      foo is tasty
12      34     blah blahhh
yeh     0      bar of yums
Run Code Online (Sandbox Code Playgroud)

该列表将是list = [foo,bar] ,因此结果将是:

result:
col1    col2   col_with_text
a       b      foo
yeh     0      bar
Run Code Online (Sandbox Code Playgroud)

之后,不仅将完成相同的字符串匹配,而且还将通过使用SequenceMatcher进行测试以进行相似性测试。这是我已经尝试过的:

def check_keywords(x):
   words_list = ['foo','bar']

   for word in x
       if word == words_list[0] or word == words_list[1]:
           return x

result = df.map(lambda x: check_keywords(x)).collect()
Run Code Online (Sandbox Code Playgroud)

不幸的是我不成功,有人可以帮我吗?提前致谢。

python dataframe apache-spark pyspark

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

R/Shiny - 如何反复写一个包含actionButton的.csv?

我试图找出如何根据最终用户的选择编写.csv.所做的选择将对"geodata.csv"进行子集化,并在应用程序文件夹中编写单独的"solution.csv"文件.

注意 - 我创建了一个github仓库,以便更轻松地解决问题.它包含geodata.csv,ui.R和server.R但还没有解决方案.

geodata.csv

Postcode,HC,BSL,Position Location
10,1,A,C
10,1,A,D
10,1,A,D
11,1,B,C
11,1,B,C
Run Code Online (Sandbox Code Playgroud)

ui.R

shinyUI(
 pageWithSidebar(
  headerPanel('Min. working example - write a csv based on user input'),

  sidebarPanel(
   selectInput("filter1", "First selection:" 
              , choices = c(Choose='', "A", "B")
              #, multiple=T
              ),

   selectInput("filter2", "Second selection:", 
              choices = c(Choose='', "C", "D")
              ),
   br(),
   p("Include actionButton to prevent write occuring before user finalises selection"),  
   actionButton("generateButton","Write Data")    
  ),
  mainPanel()
 )
)
Run Code Online (Sandbox Code Playgroud)

server.R

# Load data
setwd("/Users/lukesingham/SOtestApp")
geodata <- read.csv("geodata.csv", na.string = "#N/A", row.names=NULL)

# …
Run Code Online (Sandbox Code Playgroud)

csv r shiny

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

R Plotly:如何将config()与plotly_build()结合使用?

运行代码,包括plotly_build(p)正确的绘图结果.

可重复的代码

library(plotly)

#data
df1 <- data.frame(cond = factor( rep(c("A","B"), each=200) ),
                  rating = c(rnorm(200),rnorm(200, mean=.8)))

df2 <- data.frame(x=c(.5,1),cond=factor(c("A","B")))

#plot
gg <- ggplot(data=df1, aes(x=rating, fill=cond)) +
    geom_vline(aes(xintercept=mean(rating, na.rm=T))
               , color="red", linetype="dashed", size=1, name="average") +
    geom_vline(aes(xintercept=median(rating, na.rm=T))
               , color="blue", linetype="dashed", size=1, name="median", yaxt="n") +
    geom_histogram(binwidth=.5, position="dodge")

#create plotly object
p <- plotly_build(gg)

#append additional options to plot object
p$data[[1]]$hoverinfo <- "name+x" #hover options for 'average'
p$data[[2]]$hoverinfo <- "name+x" #hover options for 'median'

#display plot
plotly_build(p)
config(displayModeBar = F, showLink …
Run Code Online (Sandbox Code Playgroud)

javascript plot r plotly

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

标签 统计

r ×5

plot ×2

plotly ×2

apache-spark ×1

bash ×1

csv ×1

dataframe ×1

ggplot2 ×1

grepl ×1

javascript ×1

pyspark ×1

python ×1

readr ×1

shiny ×1