【发布时间】:2016-01-13 21:30:33
【问题描述】:
我有以下数据集:
df<-data.frame(read.table(header = TRUE, text = "
ID N1 N2 N3 N4
1 2 3 4 5
11 NA -12 14 55
21 12 SON 34 14"))
我想知道每行中的最大条目是多少。例如,第一行中有 5 个。显然,由于缺少值('NA')和字符串('SON'),情况会更加复杂。
我首先尝试了以下命令:
df$Result<-apply(df,1, max, na.rm= TRUE)
结果是 [5,55, SON]!不是我想要的。因此,我尝试了:
checkd<- function(x) if(is.integer(x)== TRUE)max(x)
df$Result<-apply(df,1, checkd)
有趣的是,它删除了最后一列 df$Result。有谁知道我做错了什么?另外,我的问题有什么解决方案?
另外,我尝试以下代码:
checkd<- function(x) if(is.integer(x)== TRUE)max(x)
df$Result<-apply(df,1, checkd, na.rm= TRUE)
它给了我Error in FUN(newX[, i], ...) : unused argument (na.rm = TRUE)!这是为什么?我的函数checkd 通常似乎不会对 R 造成任何问题。为什么当我使用 checkd 时 R 拒绝 na.rm= TRUE 而在应用中使用 max 时却拒绝?
谢谢,
Dom
【问题讨论】:
-
试试
apply(as.matrix(data.frame(lapply(df,as.numeric))),1,max,na.rm=TRUE)