【问题标题】:Change a value from a specific row to in a data frame in R [duplicate]将特定行中的值更改为R中的数据框中的值[重复]
【发布时间】:2017-12-15 05:07:50
【问题描述】:

我目前正在尝试更改具有维度 (401, 2) 的数据框中某些特定行的某些特定值。

数据框如下所示:

logFC pval cg00035864 2.931898e-02 0.519802679 cg00061679 -9.465129e-05 0.519802679 cg00063477 -1.360574e-01 0.244373340 cg00121626 7.946710e-03 0.611252125 cg00212031 -6.052011e-02 0.774827599 cg00213748 -9.248549e-02 0.851445095 cg00214611 8.384351e-02 0.519802679 cg00223952 2.184674e-03 0.998934883 cg00243321 9.606841e-02 0.519802679 cg00271873 1.781436e-01 0.605388199 cg00272582 1.186292e-01 0.191905652 cg00308367 1.496136e-02 0.791579139 cg00311963 1.260400e-01 0.519802679 cg00335297 1.819981e-01 0.405942400 cg00455876 1.107911e-01 0.519802679 cg00576139 -9.465129e-05 0.519802679 cg00599377 9.778042e-02 0.519802679 cg00639218 1.005280e-01 0.719199850 cg00676506 2.603663e-02 0.706729687 cg00679624 -3.499232e-02 0.735048055 cg00762184 3.561985e-02 0.039468075 cg00789540 1.296961e-01 0.519802679 cg00876332 -1.240570e-01 0.991495608 cg00975375 1.242095e-01 0.519802679 cg01053349 6.237889e-02 0.938655973 cg01061520 3.988364e-02 0.529964491 cg01073572 -9.700589e-02 0.000829731 cg01086462 -5.650370e-02 0.519802679 cg01141334 1.130912e-01 0.883360324 cg01209756 9.301333e-02 0.519802679

我想要更改 logFC 列中未通过 5% FDR(列 pval,已调整)的那些行的值。

我这样做的方式很粗略,只是检查哪个不重要,然后将它们更改为0。如下所示:

data[data$pval >= 0.05,]

  • 在这里,我查看哪些行是我想要更改的行。让我们举一个例子,即原始数据框中的第 2、3、5、8、10 和 11 行。然后我这样继续:

data$logFC[c(2,3,5,8,10,11)] <- 0

当前的问题是我曾经在维度为 15、2 的数据框中执行此操作。现在,如前所述,维度更大(401、2)。所以我不能“手动”做。

有人知道有效的方法吗?

非常感谢,

艾娜

【问题讨论】:

  • 如果新值是从另一个值计算出来的,则建议的解决方案不起作用,例如df$logFC[df$pval >= 0.05] <- df$pval + 3

标签: r dataframe


【解决方案1】:

正常的做法是

df$logFC[df$pval >= 0.05] <- 0 

这对于您的420 x 2 数据框来说肯定足够快。

这是非常基本的 R 编程。如果您打算更频繁地使用 R,我建议您做一个教程或类似this

附带说明,不要使用 data 作为数据框的名称,因为名称 data 实际上是为其他目的而保留的。我建议使用df 左右

【讨论】:

    【解决方案2】:

    这样的一段代码应该可以工作:

    df$logFC[df$pval >= 0.05] <- 0
    

    df 是你的数据框。

    【讨论】:

    • 我发现我 46 岁太慢了...
    • 顺便说一句,这个问题是不是与例如以下问题的重复:stackoverflow.com/questions/13871614/…(我的代表太低,无法发表评论,除了我自己)
    猜你喜欢
    • 2018-10-04
    • 2022-01-05
    • 1970-01-01
    • 2016-11-24
    • 2016-06-10
    • 2016-09-25
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    相关资源
    最近更新 更多