gpt4 book ai didi

r - 基于 r 中的条件的子集列表

转载 作者:行者123 更新时间:2023-12-02 03:15:03 26 4
gpt4 key购买 nike

我有一个数据框,如下所示:

df = read.table(text="S00001    S00002  S00003  S00004  S00005  S00006  
GG AA GG AA GG AG
CC TT TT TC TC TT
TT CC CC TT TT TT
AA AA GG AA AG AA
TT CC CC TT TC TT
GG GG GG AA GG GG", header=T, stringsAsFactors=F)

我想计算每行具有相同字母(即“AA”、“CC”、“GG”或“TT”)的字符串的数量。我所做的是使用 table() 函数来计算所有元素,并根据列表名称是否为“同源”生成另一个列表。我尝试对列表进行子集化,但没有成功。这是我的脚本:

A <- apply(df,1, function(x) table(x))
B <- apply(df,1, function(x) (names(table(x)) %in% c("AA","CC","GG","TT")))
A[B] ## this didn't work

我希望生成一个数据框:

2 3
1 3
2 4
4 1
2 3
1 5

感谢任何帮助。

最佳答案

尝试映射。它将按顺序获取列表中的每个元素进行评估。 header 名称是自动生成的,您可以根据需要更改它们:

t(mapply('[', A, B))
AA GG
[1,] 2 3
[2,] 1 3
[3,] 2 4
[4,] 4 1
[5,] 2 3
[6,] 1 5

正如 CathG 所提到的,您可以使用以下方法避免计算 B:

t(sapply(A, function(x){x[grepl("([A-Z])\\1", names(x))]}))

关于r - 基于 r 中的条件的子集列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34657884/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com