R:将基于逻辑条件的值与NA值相乘

问题描述

如果您有完整的数据框,则可以很容易地根据逻辑条件将值相乘:

df = data.frame(
    var1 = c(1,2,3,4,5),var2 = c(1,1),var3 = c(5,5)
)

> df
  var1 var2 var3
1    1    1    5
2    2    2    4
3    3    3    3
4    4    2    4
5    5    1    5

> df[df > 2] <- df[df > 2] * 10

> df
  var1 var2 var3
1    1    1   50
2    2    2   40
3   30   30   30
4   40    2   40
5   50    1   50

但是,如果数据框中包含NA值,则操作将失败:

> df_na = data.frame(
    var1 = c(NA,1,NA),NA,5)
)

> df_na
  var1 var2 var3
1   NA    1    5
2    2    2   NA
3    3    3    3
4    4    1    4
5    5   NA    5

> df_na[df_na > 2] <- df_na[df_na > 2] * 10
Error in `[<-.data.frame`(`*tmp*`,df_na > 2,value = c(NA,30,40,50,: 
  'value' is the wrong length

例如,我尝试了一些na.omit()策略,但无法使其起作用。在堆栈溢出中,我也找不到合适的问题。

那我该怎么办?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)