R 为多列提取比最后一个值大10倍的元素

R 为多列提取比最后一个值大10倍的元素,r,R,我是一个新的R用户。 我有一个由50列和300行组成的数据框架。第一列表示ID,第二列到最后一列表示性状的标准偏差(sd)。每列的汇总sd显示在最后一行。对于每一列,我想删除所有那些比合并sd大十倍的值。我想一次跑完。到目前为止,下面的脚本是我为了知道某个值是否大于合并的sd而想出的脚本。但是,即使是ID(字符)也在处理中(导致全部为FALSE)。如果我把raw_sd_summary[-1],我无法知道哪个ID在哪个特征上有我要寻找的标准 logic_sd <- lapply(raw_s

我是一个新的R用户。 我有一个由50列和300行组成的数据框架。第一列表示ID,第二列到最后一列表示性状的标准偏差(sd)。每列的汇总sd显示在最后一行。对于每一列,我想删除所有那些比合并sd大十倍的值。我想一次跑完。到目前为止,下面的脚本是我为了知道某个值是否大于合并的sd而想出的脚本。但是,即使是ID(字符)也在处理中(导致全部为FALSE)。如果我把raw_sd_summary[-1],我无法知道哪个ID在哪个特征上有我要寻找的标准

 logic_sd <- lapply(raw_sd_summary, function(x) x>tail(x,1) )
 logic_sd_df <- as.data.frame(logic_sd)
logic_sd tail(x,1))

logic_sd_df我认为您的代码将无法工作,因为lapply将运行在data.frame的列上,而不是您想要的行上。换成

logic_sd <- apply(raw_sd_summary, 2, function(x) x>10*tail(x,1) )
logic_sd 10*tail(x,1))
这将为您提供一个超过最后一行10倍的逻辑数组。您可以通过替换第一列来恢复ID

logic_sd[,1]  <- raw_sd_summary[,1]

logic_sd[,1]是否要完全删除任何元素不符合此标准的所有行?此外,您还可以创建一个模拟数据帧进行演示:
set.seed(24);dfI已尝试,但输出为ID下的所有行均为“FALSE”,而trait列下的所有行均为“NA”:(需要查看您正在运行的代码,以查看出现了什么错误……逻辑正确吗?
raw_sd_summary[-300,-1][logic_sd[-300,-1]]<-NA    # or new value