小编Ben*_*ker的帖子

expand.grid和mapply的组合?

我想拿出一个变种mapply(称它为xapply现在),它结合了功能(在某种程度上)的expand.gridmapply.也就是说,对于一个功能FUN和参数列表L1,L2,L3,...的长度未知,但应该产生长度的列表n1*n2*n3(其中,ni是列表的长度i),这是施加的结果FUN到的元素的所有组合名单.

如果expand.grid用于生成列表而不是数据框列表,则可以使用它,但我记得列表可能是不一定适合数据框的事物列表.

如果有三个要扩展的列表,这个功能可以正常工作,但我很好奇一个更通用的解决方案.(FLATTEN未使用,但我可以想象这FLATTEN=FALSE将生成嵌套列表而不是单个列表...)

xapply3 <- function(FUN,L1,L2,L3,FLATTEN=TRUE,MoreArgs=NULL) {
  retlist <- list()
  count <- 1
  for (i in seq_along(L1)) {
    for (j in seq_along(L2)) {
      for (k in seq_along(L3)) {
        retlist[[count]] <- do.call(FUN,c(list(L1[[i]],L2[[j]],L3[[k]]),MoreArgs))
        count <- count+1
      }
    }
  }
  retlist
}
Run Code Online (Sandbox Code Playgroud)

编辑:忘了返回结果.有人可能通过combn在那里制作一份指数清单来解决这个问题......

r lapply

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

如果只有一个绘图有轴标签,如何创建多个绘图,每个绘图具有相同的绘图区域大小?

我想在1x3布局中绘制三个图形.只有第一个图形需要有垂直轴标签,但我希望所有三个绘图区域的大小完全相同.如果没有或所有图表都有轴标签,这将没有问题.但是,当一个有轴标签而另外两个没有时,如何让所有三个图形大小相同?我试图在基本图形中执行此操作,因为这是我最熟悉的,但如果它们提供更好的方法来解决我的问题,我会很乐意使用grid或ggplot2.

这是一些假数据,我的绘图代码和情节本身:

# Fake Data
data = structure(list(y1 = 1:5, y2 = c(1.2, 2.4, 3.6, 4.8, 6), y3 = c(1.44, 
2.88, 4.32, 5.76, 7.2)), .Names = c("y1", "y2", "y3"), 
row.names = c("I needed 12 units for financial aid", 
              "I couldn't find any other open classes",
              "I might be adding a major or minor", 
              "The class seemed interesting", "The class fit into my schedule"
), class = "data.frame")

# Plotting code
par(mar=c(5,15,4,1))
par(mfrow=c(1,3))
barplot(data$y1,names.arg=row.names(data), horiz=TRUE,las=1, +
        xlim=c(0,8), main="Group 1")
par(mar=c(5,1,4,1))
barplot(data$y2,names.arg=row.names(data), …
Run Code Online (Sandbox Code Playgroud)

graphics layout plot r

8
推荐指数
3
解决办法
9057
查看次数

Kronecker产品适用于大型矩阵

我正在寻找一种计算两个大矩阵的Kronecker积的有效方法.我尝试过使用kronecker()如下方法:

 I = diag(700)
 data = replicate(15, rnorm(120))
 test = kronecker(I,data)
Run Code Online (Sandbox Code Playgroud)

但是,执行需要很长时间,然后给出以下错误:

 Error: cannot allocate vector of size 6.8 Gb
Run Code Online (Sandbox Code Playgroud)

r matrix

8
推荐指数
2
解决办法
4697
查看次数

补充DNA序列

假设我有一个DNA序列.我想得到它的补充.我使用了以下代码,但我没有得到它.我究竟做错了什么 ?

s=readline()
ATCTCGGCGCGCATCGCGTACGCTACTAGC
p=unlist(strsplit(s,""))
h=rep("N",nchar(s))
unlist(lapply(p,function(d){
for b in (1:nchar(s)) {    
    if (p[b]=="A") h[b]="T"
    if (p[b]=="T") h[b]="A"
    if (p[b]=="G") h[b]="C"
    if (p[b]=="C") h[b]="G"
}
Run Code Online (Sandbox Code Playgroud)

replace r bioinformatics complement genetics

8
推荐指数
5
解决办法
7028
查看次数

精子功能不清楚

所以我试图找出这个功能的aperm()作用.当我这样做aperm(a),a矩阵在哪里,我得到它的转置; 我明白了.但是这个功能怎么样:

aperm(a,c(3,1:2))
Run Code Online (Sandbox Code Playgroud)

这是做什么的?when a是6*7矩阵时,此命令不起作用.

我也不理解R的例子.

r function

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

R - 强制某个参数在lm()中具有正系数

我想知道如何约束某些参数lm()以获得正系数.有一些包或函数(例如display)可以使所有系数和拦截为正.

例如,在这个例子中,我只想强迫x1x2具有正系数.

    x1=c(NA,rnorm(99)*10)
    x2=c(NA,NA,rnorm(98)*10)
    x3=rnorm(100)*10
    y=sin(x1)+cos(x2)-x3+rnorm(100)

    lm(y~x1+x2+x3)

    Call:
      lm(formula = y ~ x1 + x2 + x3)       
    Coefficients:
      (Intercept)           x1           x2           x3  
    -0.06278      0.02261     -0.02233     -0.99626
Run Code Online (Sandbox Code Playgroud)

我试过功能nnnpls()nnls,它可以轻松控制系数符号.遗憾的是,由于数据中的NA问题,我无法使用它,因为此函数不允许NA.

我看到函数NA可用于应用约束但我无法使其工作.

有人能让我知道我该怎么办?

regression r linear-regression lm glm

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

包车无法加载,错误的版本nlme

当我尝试加载'car'包时出现此错误:

library(car)

Error in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]) : 
  namespace 'nlme' 3.1-122 is already loaded, but >= 3.1.123 is required
Error: package or namespace load failed for 'car'
Run Code Online (Sandbox Code Playgroud)

但是当我跑步时update.packages(),没有什么可以更新的.如果重要的话,我正在使用MRO 3.2.3.

r r-car nlme

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

如何通过R中的线性插值来找到点

我有两个点(5,0.45)和(6,0.50)并且需要通过线性插值找到x = 5.019802时的值

但是如何在R中编码呢?

我得到了下面的代码,但只是得到一个图表insdeed.

x <- c(5,6)
y <- c(0.45,0.50)

interp <- approx(x,y)

plot(x,y,pch=16,cex=2)
points(interp,col='red')
Run Code Online (Sandbox Code Playgroud)

r linear-interpolation

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

无法在一个tibble中查看超过10行

首先 - 我是编程和R的初学者,所以请原谅我这是一个愚蠢的问题.我在查看由以下代码生成的tibble中的十多行时遇到问题.

下面的代码旨在找到书中最常见的单词.我得到了我想要的结果,但是如何查看超过10行的数据.据我所知,它不会被保存为我可以调用的数据框架.

library(dplyr)
tidy_books %>%
    anti_join(stop_words) %>%
    count(word, sort=TRUE)
Joining, by = "word"
# A tibble: 3,397 x 2
   word       n
   <chr>  <int>
 1 alice    820
 2 queen    247
 3 time     141
 4 king     122
 5 head     112
 6 looked   100
 7 white     97
 8 round     96
 9 voice     86
10 tone      81
# ... with 3,387 more rows
Run Code Online (Sandbox Code Playgroud)

r dplyr tidyverse tidytext tibble

8
推荐指数
2
解决办法
5883
查看次数

使用`file.copy`比使用`system(mv ...)`更慢地通过网络复制文件

当我通过我们的公司网络访问文件时,我遇到了一些R问题变得非常迟缓的问题.所以,我回落,并做了一些测试,我感到非常震惊地发现,将R file.copy()命令MUCH比使用等效文件拷贝速度较慢system(mv ...).这是一个已知问题还是我在这里做错了什么?

这是我的测试:

我有3个文件:

  • large_random.txt - ~100MB
  • medium_random.txt - ~10MB
  • small_random.txt - ~1 MB

我在我的Mac上创建了这些:

dd if=/dev/urandom of=small_random.txt bs=1048576 count=1
dd if=/dev/urandom of=medium_random.txt bs=1048576 count=10
dd if=/dev/urandom of=large_random.txt bs=1048576 count=100
Run Code Online (Sandbox Code Playgroud)

但是以下R测试都是使用在虚拟机中运行的Windows完成的.J驱车是当地的,N驱车距离酒店有700英里.

library(tictoc)

test_copy <- function(source, des){
  tic('r file.copy')
  file.remove(des)
  file.copy(source, des )
  toc()

  tic('system call')
  system(paste('rm', des, sep=' '))
  system(paste('cp', source, des, sep=' '))
  toc()
}

source <- 'J:\\tidy_examples\\dummyfiles\\small_random.txt'
des <- 'N:\\JAL\\2018\\_temp\\small_random.txt'
test_copy(source, des)

source <- 'J:\\tidy_examples\\dummyfiles\\medium_random.txt'
des <- 'N:\\JAL\\2018\\_temp\\medium_random.txt'
test_copy(source, des)

source <- …
Run Code Online (Sandbox Code Playgroud)

r drive

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