R-如果不存在,请跳过pmax命令中的列

时间:2018-08-21 09:10:08

标签: r

我想使用pmax命令创建一个新列。我的代码如下所示:

this

但是,在我当前的数据库中,仅存在RAM1至RAM8列。在这种情况下,我希望R跳过语句中提到的所有其他列,而仅使用RAM1到RAM8列(如果R显示错误消息是可以的,但是我不希望程序中断运行代码)

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

执行此操作的一种方法如下:

设置一些数据来制作可重复的示例

set.seed(0)
Master <- data.frame(Other=100,RAM1=1:10, RAM2=1:10, RAM3=1:10, RAM4=1:10, 
                     RAM5=1:10, RAM6=1:10, RAM7=1:10, RAM8=rnorm(10)+5)
Master[5,5] <- NA

选择数据框的必需列:

Master[colnames(Master) %in% paste0("RAM",1:92)]

使用do.call将选定的列作为参数运行pmax,并添加参数na.rm=TRUE

Master$RAM <- do.call(pmax, c(Master[colnames(Master) %in% paste0("RAM",1:92)], na.rm=TRUE)) 

示例输出:

Master
#   Other RAM1 RAM2 RAM3 RAM4 RAM5 RAM6 RAM7     RAM8       RAM
#1    100    1    1    1    1    1    1    1 6.262954  6.262954
#2    100    2    2    2    2    2    2    2 4.673767  4.673767
#3    100    3    3    3    3    3    3    3 6.329799  6.329799
#4    100    4    4    4    4    4    4    4 6.272429  6.272429
#5    100    5    5    5   NA    5    5    5 5.414641  5.414641
#6    100    6    6    6    6    6    6    6 3.460050  6.000000
#7    100    7    7    7    7    7    7    7 4.071433  7.000000
#8    100    8    8    8    8    8    8    8 4.705280  8.000000
#9    100    9    9    9    9    9    9    9 4.994233  9.000000
#10   100   10   10   10   10   10   10   10 7.404653 10.000000