我想使用pmax命令创建一个新列。我的代码如下所示:
this
但是,在我当前的数据库中,仅存在RAM1至RAM8列。在这种情况下,我希望R跳过语句中提到的所有其他列,而仅使用RAM1到RAM8列(如果R显示错误消息是可以的,但是我不希望程序中断运行代码)
有什么想法吗?
谢谢!
答案 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