【问题标题】:looping the which() function over a list of dataframes with lapply使用 lapply 在数据帧列表上循环 which() 函数
【发布时间】:2019-10-11 09:45:46
【问题描述】:

我在 R 在数据帧列表上循环 which() 函数时遇到问题。我需要用 1 替换所有 >1 的数字。 这是我的代码。

mylist_b <- lapply(mylist_a, function(x){
                                          x[which(x>1)] <- 1
                                    })

这是我的 mylist_a 数据框之一

                                       D1           D2         D3
a                              0.68659264 1.047092e+01  1.0009219
b                              0.02358574 7.992743e-04  0.3253237
c                              5.23294642 1.130614e+01  5.6566890
d                              2.86947631 7.860165e+00 15.0000000
e                              8.09922178 8.196586e+00 15.0000000
f                             15.00000000 1.500000e+01  1.8389688

当我运行我的代码时,我得到了 mylist_b,但它是一个数字向量列表,每个向量只有一个值。

> mylist_b$dataframe_a
[1] 1
> class(mylist_b$dataframe_a)
[1] "numeric"

相反,当我在每个数据帧上运行 which() 函数时,它工作正常

mylist_a$dataframe_a[which(mylist_a$dataframe_a>1)] <- 1

这是结果

                                       D1           D2           D3
a                             6.865926e-01 1.000000e+00 1.000000e+00
b                             2.358574e-02 7.992743e-04 3.253237e-01
c                             1.000000e+00 1.000000e+00 1.000000e+00
d                             1.000000e+00 1.000000e+00 1.000000e+00
e                             1.000000e+00 1.000000e+00 1.000000e+00
f                             1.000000e+00 1.000000e+00 1.000000e+00

有人可以帮忙吗?

【问题讨论】:

    标签: r list dataframe lapply


    【解决方案1】:

    如果你返回 x 就可以了

    lapply(mylist_a, function(x){
        x[x>1] <- 1
        x
    })
    

    另一种选择是使用pmin

    lapply(mylist_a, function(x) pmin(as.matrix(x), 1))
    

    【讨论】:

      【解决方案2】:

      也可以选择使用replace

      lapply(mylist_a, function(x) replace(x, x > 1, 1))
      

      【讨论】:

        猜你喜欢
        • 2018-10-29
        • 1970-01-01
        • 2015-10-12
        • 2020-09-11
        • 1970-01-01
        • 2019-06-22
        • 2012-10-16
        • 2020-04-04
        相关资源
        最近更新 更多