将值从特定行更改为R

时间:2017-07-11 08:36:43

标签: r dataframe

我目前正在尝试使用维度(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)。所以我不能手动操作&#34;。

有人知道这样做的有效方法吗?

非常感谢,

阿纳

2 个答案:

答案 0 :(得分:3)

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

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

其中df是您的数据框。

答案 1 :(得分:1)

正常的方法是

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

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

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

的内容

在旁注上,请勿使用data作为数据框的名称,因为名称data实际上是为其他目的而保留的。我建议使用df左右