【问题标题】:How can I replace specific values of all elements in a list如何替换列表中所有元素的特定值
【发布时间】:2018-12-14 11:17:41
【问题描述】:

我有一个包含 11 个元素的列表 cluster_list,每个元素的长度相同。

 > class(cluster_list)
[1] "list"

每个元素看起来都像示例元素 2:

head(cluster_list[[2]][,1:15])
     X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15
765   t  t  t  c  t  t  a  a  a   a   c   a   t   a   a
7319  -  -  -  -  -  -  -  -  -   -   -   -   -   -   -
8335  t  t  t  c  t  t  a  a  a   a   c   a   t   a   a
7162  -  -  -  -  -  -  -  -  -   -   -   t   c   t   a
7382  -  -  -  -  -  -  -  -  -   -   -   -   -   -   -
7244  -  -  -  -  -  -  -  -  -   -   -   -   -   -   -

我想将列表中所有 11 个元素的所有 "-" 删除/更改为 ""

我知道如何在矩阵中做到这一点:

matrix_new <- matrix_old[matrix_old=="-"] <- ""

或者如何删除列表中元素的一列:

cluster_list <- lapply(cluster_list, function(x) x[!(names(x) %in% c("X1"))])

但我无法从列表中删除 "-"。 (我是使用 listlapply 函数的新手) 任何使它看起来像的建议:

> head(cluster_list[[2]][,1:15])
     X1  X2  X3  X4  X5  X6  X7  X8  X9  X10 X11 X12 X13 X14 X15
765  "t" "t" "t" "c" "t" "t" "a" "a" "a" "a" "c" "a" "t" "a" "a"
7319 ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  "" 
8335 "t" "t" "t" "c" "t" "t" "a" "a" "a" "a" "c" "a" "t" "a" "a"
7162 ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  "t" "c" "t" "a"
7382 ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  "" 
7244 ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  "" 

谢谢 克

【问题讨论】:

    标签: r list lapply


    【解决方案1】:

    我们可以遍历list,并使用replace,将- 的值更改为空白(''

    cluster_list_new <- lapply(cluster_list, function(x) replace(x, x== '-', ''))
    

    【讨论】:

    • 该函数将所有"-" 替换为&lt;NA&gt; 我认为这将解决问题。谢谢!!
    • @KonradWeber 不确定为什么要替换为NA,也许你有一个factor 类?
    • 是的,是factor
    • NA实际上造成了麻烦,因为我想在下一步将列表转换为fasta格式。我认为将其作为矩阵处理 cluster_matrix &lt;- as.matrix(cluster_list_new) 而不是替换 cluster_matrix_new &lt;- lapply(matrix_list, function(x) replace(x, x== '-', '')) 会有所帮助。我仍然得到 NA 。我猜factor 类是问题所在?但是如何解决呢?
    • @KonradWeber 你能通过class(cluster_list[[1]])str(cluster_list[[1]])查看课程吗?
    猜你喜欢
    • 2021-01-13
    • 2015-12-29
    • 2020-09-27
    • 2018-05-06
    • 1970-01-01
    • 2018-04-16
    • 1970-01-01
    • 2019-03-25
    • 2013-05-28
    相关资源
    最近更新 更多