小编use*_*672的帖子

在R:dcast函数中,传递列名称(再次!)

鉴于半长的格式ID为变量DF ab和测定在列中的数据m1m2.数据类型由变量指定v(值var1和var2).

set.seed(8)

df_l <- 
  data.frame(
    a = rep(sample(LETTERS,5),2),
    b = rep(sample(letters,5),2),
    v = c(rep("var1",5),rep("var2",5)),
    m1 = sample(1:10,10,F),
    m2 = sample(20:40,10,F)) 
Run Code Online (Sandbox Code Playgroud)

看起来像:

   a b    v m1 m2
1  W r var1  3 40
2  N l var1  6 32
3  R a var1  9 28
4  F g var1  5 21
5  E u var1  4 38
6  W r var2  1 35
7  N l var2  8 33
8  R …
Run Code Online (Sandbox Code Playgroud)

arguments casting r function reshape2

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

R,使用包含grepl()的ifelse的dplyr :: mutate会产生意想不到的结果

这个ifelse声明有什么问题.

df <- data.frame(var1=c('ABC','CAB', 'AB'))
dplyr::mutate(df, var2=ifelse(grepl('^AB',var1), 'AB-starter', var1))
Run Code Online (Sandbox Code Playgroud)

  var1       var2
1  ABC AB-starter
2  CAB          3
3   AB AB-starter
Run Code Online (Sandbox Code Playgroud)

我想(使用mutate和ifelse语句)var2的第二个元素中var1的值(即'var1'不以"AB"开头):

  var1       var2
1  ABC AB-starter
2  CAB        CAB
3   AB AB-starter
Run Code Online (Sandbox Code Playgroud)

if-statement r dplyr grepl

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

使用dplyr :: mutate()的列子集上的行方式cor()

set.seed(8)
df <- data.frame(
  A=sample(c(1:3), 10, replace=T), 
  B=sample(c(1:3), 10, replace=T),
  C=sample(c(1:3), 10, replace=T),
  D=sample(c(1:3), 10, replace=T),
  E=sample(c(1:3), 10, replace=T), 
  F=sample(c(1:3), 10, replace=T))
Run Code Online (Sandbox Code Playgroud)

想要将列的子集传递给dplyr mutate()并进行逐行计算,例如cor()在列AC和DF之间获得相关性,但无法弄清楚如何.在这里,这里这里找到了SO的灵感,但却未能产生可接受的代码.例如,我试过这个:

require(plyr)
require(dplyr)
df %>%
  rowwise() %>%
  mutate(c=cor(.[[1:3]],.[[4:6]]))
Run Code Online (Sandbox Code Playgroud)

r rows subset correlation dplyr

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

在R:传递列名作为参数并在函数中使用它与dplyr :: mutate()和lazyeval :: interp()

这个问题链接到这个SO答案,除了在这里我想使用在a中指定为函数arg的变量mutate_().如果我不做任何"计算",它的工作原理是mutate_():

data <- 
  data.frame(v1=c(1,2),
             v2=c(3,4))



func1 <- function(df, varname){
    res <-
      df %>%
      mutate_(v3=varname)
    return(res)
  }
func1(data, "v1")
Run Code Online (Sandbox Code Playgroud)

这给了预期:

  v1 v2 v3
1  1  3  1
2  2  4  2
Run Code Online (Sandbox Code Playgroud)

但如果我做这样的事情,似乎我没有正确指定"v3":

func2 <- function(df, varname){
  res <-
    df %>%
    mutate_(v3=sum(varname))
  return(res)
}
func2(data, "v1") 
Run Code Online (Sandbox Code Playgroud)

不起作用; 为什么它不等同于函数之外?:

data %>%
  mutate(v3=sum(v1))
Run Code Online (Sandbox Code Playgroud)

得到:

  v1 v2 v3
1  1  3  3
2  2  4  3
Run Code Online (Sandbox Code Playgroud)

更新(在@docendo discimus的解决方案之后):关于使用lazyeval::interp()工作的解决方案.但是,如果有一个更复杂的功能,我似乎得到了很多打字.例如.我想要一个函数,可以在计数数据框中为所有NP组合返回得分和fisher的2x2 pvalue,c.

require(plyr)
require(dplyr)
require(lazyeval)
set.seed(8)
df <- 
  data.frame(
    N …
Run Code Online (Sandbox Code Playgroud)

arguments r function variable-names dplyr

3
推荐指数
2
解决办法
4773
查看次数

控制 ggplot2 geom_bar 的填充顺序和组

library(ggplot2)


 data <- 
  data.frame(
    group=factor(c("a","c","b","b","c","a")),
    x=c("A","B","C", "D","E","F"),
    y=c(3,2,10,11,4,5)) 

> data
  group x  y
1     a A  3
2     c B  2
3     b C 10
4     b D 11
5     c E  4
6     a F  5

#And plot this:
ggplot(data)+
  geom_bar(aes(x=x, y=y, fill=group, order=group),
           stat="identity",
           position="dodge")+
  coord_flip()
Run Code Online (Sandbox Code Playgroud)

这给出了一个图,其中 x 根据因子水平绘制: 在此处输入图片说明

但是如何根据group变量的自定义顺序对 x 重新排序,同时group按照降序排列y。例如,如果我想先绘制“c”(红色)、“a”(绿色)和“b”(蓝色)组,x 轴(x变量)的绘制顺序将是:E、B、 F、A、D、C。请注意,这可能与SO 问题相似。

r ggplot2 geom-bar

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

R,使用 load() 从 .rda 对象分配内容

这是非常基本的(我怀疑其他地方已经问过这个问题,尽管这里不完全是这样)。

我有大量 .rda 文件,每个文件都有一个数据帧。我想对每个数据帧进行计算,因此需要加载它们(load())。如果它们是 .RDS 对象,我会这样:

#My data
x <- data.frame(a=1:3)
y <- data.frame(a=3:6)

#Save as RDS 
saveRDS(x, file = "x.rds")
saveRDS(y, file = "y.rds")

files <- c("x.rds", "y.rds")
data <- lapply(files, readRDS)

#Do something with the data in the list "data"
Run Code Online (Sandbox Code Playgroud)

我怎样才能使用做类似的事情,load因为你不能将数据(只能是名称)分配给变量:

x <- data.frame(a=1:3)

> x
  a
1 1
2 2
3 3

save(x, file= "x.rda")
x <- load("x.rda")

> x
[1] "x"
Run Code Online (Sandbox Code Playgroud)

types load r rda

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

R,在第n次出现之前的所有内容的正则表达式

s <- "1-343-43Hello_2_323.14_fdh-99H"
Run Code Online (Sandbox Code Playgroud)

在RI中想要使用正则表达式来获取子串,比如说第二个下划线.如何使用一个正则表达式完成这项工作?另一种方法是用'_'分割然后粘贴前两个 - 一些东西;

paste(sapply(strsplit(s, "_"),"[", 1:2), collapse = "_")
Run Code Online (Sandbox Code Playgroud)

得到:

[1] "1-343-43Hello_2"
Run Code Online (Sandbox Code Playgroud)

但是我如何制作正则表达式来做同样的事情呢?

regex split r

3
推荐指数
2
解决办法
1737
查看次数

R lazyeval:将参数传递给 dplyr::filter

我认为这个问题有多种其他变化(例如:herehere ,也许here) - 甚至可能是某个地方的答案。

如何为过滤器函数提供参数。

library(dplyr)
library(lazyeval)
set.seed(10)
data <- data.frame(a=sample(1:10, 100, T))
Run Code Online (Sandbox Code Playgroud)

如果我需要计算数字 1 到 10 的出现次数并显示计数,比如 1、2 和 3,我会这样做:

data %>% 
  group_by(a) %>% 
  summarise(n = n()) %>% 
  filter(a < 4)
Run Code Online (Sandbox Code Playgroud)

给出:

# A tibble: 3 × 2
      a     n
  <int> <int>
1     1    11
2     2     8
3     3    16
Run Code Online (Sandbox Code Playgroud)

现在,我怎样才能把它放到一个函数中?这grp是分组变量。

   fun <- function(d, grp, no){
      d %>% 
        group_by_(grp) %>% 
        summarise_(n = interp(~ n() )) %>%
        filter_( grp < no)
        # …
Run Code Online (Sandbox Code Playgroud)

parameters r filter dplyr lazyeval

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

使用常量(自然数)展开数字向量元素

给定一个向量v <- c(1, 10, 22)和一个常数自然数,说明c <- 3如何v在一个大小的窗口中用整数展开c.所以向量将变为w(即1向每边扩展三个整数,整数-2,-1,0,1,2,3,4):

> w
 [1] -2 -1  0  1  2  3  4  7  8  9 10 11 12 13 19 20 21 22 23 24 25
Run Code Online (Sandbox Code Playgroud)

integer r vector

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

如何提供(逻辑)运算符作为函数的参数

是否可以提供逻辑(或算术)运算符作为 R 函数的参数。检查这个共享主题的SO问题。

f1 <- function(a, b) a>b
Run Code Online (Sandbox Code Playgroud)

然后

> f1(1,2)
[1] FALSE
Run Code Online (Sandbox Code Playgroud)

我如何实现允许我更改功能测试的运算符,例如

f2 <- function(a, b, operator = c('<', '>', '==')) { ... }
Run Code Online (Sandbox Code Playgroud)

那我愿意

> f2(1, 2, '<')
[1] TRUE
Run Code Online (Sandbox Code Playgroud)

arguments r function operators

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