小编Ada*_*amm的帖子

R 同时循环两个或多个向量 - 并行

我正在寻找在 R 中同时迭代两个或多个字符向量/列表的方法。有没有办法做类似的事情:

foo <- c('a','c','d')
bar <- c('aa','cc','dd')

for(i in o){
  print(o[i], p[i])
}
Run Code Online (Sandbox Code Playgroud)

期望的结果:

'a', 'aa'
'c', 'cc'
'd', 'dd'
Run Code Online (Sandbox Code Playgroud)

在Python中我们可以简单地做:

foo = ('a', 'c', 'd')
bar = ('aa', 'cc', 'dd')

for i, j in zip(foo, bar):
    print(i, j)
Run Code Online (Sandbox Code Playgroud)

但我们可以在 R 中做到这一点吗?

iteration loops r

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

查找字符串中重叠的长度

您知道有什么现成的方法可以获取两个字符串的长度和重叠吗?然而只有与R,也许有什么来自stringr?我正在寻找这里,不幸的是没有成功。

str1 <- 'ABCDE'
str2 <- 'CDEFG'

str_overlap(str1, str2)
'CDE'

str_overlap_len(str1, str2)
3
Run Code Online (Sandbox Code Playgroud)

其他例子:

str1 <- 'ATTAGACCTG'
str2 <- 'CCTGCCGGAA'

str_overlap(str1, str2)
'CCTG'

str_overlap_len(str1, str2)
4
Run Code Online (Sandbox Code Playgroud)

///

str1 <- 'foobarandfoo'
str2 <- 'barand'

str_overlap(str1, str2)
'barand'

str_overlap_len(str1, str2)
6
Run Code Online (Sandbox Code Playgroud)

/// 是的,两个解决方案,总是选择总是重叠

str1 <- 'EFGABCDE'
str2 <- 'ABCDECDE'

str_overlap(str1, str2)
'ABCDE'

str_overlap_len(str1, str2)
5
Run Code Online (Sandbox Code Playgroud)

我想知道是否有自制的小功能,比如这个

string r bioinformatics overlap dna-sequence

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

最长的子序列,算法工作错误,不明白为什么

我实现了最长增加子序列(LIS)算法,因为我认为它会起作用,但结果完全是混乱的.

def lis():
    #D = map(int, raw_input().split())
    D = [3, 2, 6, 4, 5, 1]
    L = [[] for i in range(len(D))]
    L[0].append(D[0])
    for i in range(len(D)):
        for j in range(0,i):
            if D[i] > D[j]:
                L[i] = L[j]
        L[i].append(D[i])
    print L
Run Code Online (Sandbox Code Playgroud)

返回结果:

[[3], [2, 6, 4, 5], [2, 6, 4, 5], [2, 6, 4, 5], [2, 6, 4, 5], [1]]
Run Code Online (Sandbox Code Playgroud)

应该是什么:

[[3], [2], [2, 6], [2, 4], [2, 4, 5], [1]]
Run Code Online (Sandbox Code Playgroud)

正如我在调试器中看到的那样:

L[i] = L[j]
Run Code Online (Sandbox Code Playgroud)

不仅L[i]获得新值 …

python algorithm list lis

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

像数据帧一样合并 df 中的列 - 获取 df 中各列具有相同值的行

我花了一些时间寻找解决方案,但是我失败了......就像标题中一样,实际上我不知道如何解释,所以示例 df:

A <- c('ABC','GHI',rep(NA,3))
B <- c('AAB','ABC','BCE','CAB',NA)
C <- c('ABC','BCE','GHI','XXX','ZZZ')
D <- c('BCE',rep(NA,4))
E <- c('GHI','ZZZ','BAR',rep(NA,2))
df <- data.frame(A,B,C,D,E)

     A    B   C    D    E
1  ABC  AAB ABC  BCE  GHI
2  GHI  ABC BCE <NA>  ZZZ
3 <NA>  BCE GHI <NA>  BAR
4 <NA>  CAB XXX <NA> <NA>
5 <NA> <NA> ZZZ <NA> <NA>
Run Code Online (Sandbox Code Playgroud)

现在我想对行重新排序,使每行具有相同的值,或者NA如果某些列中不存在特定值。期望的输出:

    A   B   C   D   E
1   ABC ABC ABC NA  NA
2   GHI NA  GHI NA  GHI
3   NA  AAB NA  NA …
Run Code Online (Sandbox Code Playgroud)

r dataframe

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

R中的生长曲线分析 - 两条生长曲线的比较

我有一个小任务要做,不幸的是我不熟悉这个统计领域......实际上我确实需要计算(我不是在寻找现成的解决方案),但是我不知道它们是否\是正确的,也是我的思维方式,因此,如果您看一下并指出我的错误,我将非常感激。

\n\n

这是假数据,显示了狗和猫的增长率(完全是虚构的):

\n\n
time <- c(1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10)\na <- rep(\'dog\', 10)\nb <- rep(\'cat\', 10)\nanimal <- c(a,b)\nval <- c(2.00,8.00,17.00,21.00,29.00,37.00,41.00,56.00,67.00,82.00,1.00,3.00,6.00,8.00,11.00,15.00,21.00,26.00,31.00,37.00)\ndata <- data.frame(time,animal,val)\n
Run Code Online (Sandbox Code Playgroud)\n\n

细看:

\n\n
require(ggplot2)\nggplot(data, aes(time, val, color=animal)) +\n  stat_summary(fun.data=mean_se, geom="pointrange") +\n  geom_point()\n
Run Code Online (Sandbox Code Playgroud)\n\n

在此输入图像描述

\n\n

正如你所见,狗比猫长得快——这可能是我的假设。但是我需要做一些统计来证实它。

\n\n

所以我决定进行生长曲线分析(GCA)。\n我是根据这个教程来的。下面是我的结果和简要说明。

\n\n

首先,我制作了一个基本模型,对每只动物进行随机截距:

\n\n
m.base <- lmer(val ~ time + (1 | animal), data=data, REML = F)\n
Run Code Online (Sandbox Code Playgroud)\n\n

这里我遇到了问题,实际上我在这里没有任何固定效应,我的数据集很简单,我想知道的是我的两组(狗和猫)的时间增长率在统计上显着不同。\ n换句话说。\n这段时间动物的生长速度有变化吗?

\n\n

因此我把我的动物作为额外的固定效果:

\n\n
m.1 <- lmer(val ~ time * animal + (1 | animal), data=data, REML = …
Run Code Online (Sandbox Code Playgroud)

statistics r anova manova

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

添加新列,其列名的值大于和小于平均值

我有一个数据框:

set.seed(100)
A <- floor(runif(5, min=0, max=10))
B <- floor(runif(5, min=0, max=10))
C <- floor(runif(5, min=0, max=10))
D <- floor(runif(5, min=0, max=10))
df <- data.frame(A,B,C,D)
df$ms <- rowMeans(df)
df
  A B C D   ms
1 3 4 6 6 4.75
2 2 8 8 2 5.00
3 5 3 2 3 3.25
4 0 5 3 3 2.75
5 4 1 7 6 4.50
Run Code Online (Sandbox Code Playgroud)

现在,当 A 列和 B 列中特定行的值低于平均值且 C 列和 D 列中的值也高于平均值时,我想添加带有列名称的列(较低和较大)。期望的结果:

  A B C D   ms  lower greater …
Run Code Online (Sandbox Code Playgroud)

r dataframe

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