【发布时间】:2017-05-07 03:50:51
【问题描述】:
我有一个数据框(以下是简化版)
b<-data.frame('v1'=1:2,'v2'=3:4,'v3'=5:6)
如果我对行使用应用:
test<-apply(b,1,function(x) {if (x[length(x)]>0) return (x/x[length(x)]) else return (0)})
我明白了:
[,1] [,2]
v1 0.2 0.3333333
v2 0.6 0.6666667
v3 1.0 1.0000000
到目前为止一切顺利,因为我确实需要列名 v1、v2、v3 成为测试中的行名。 但是如果数据框全为零,
b1<-data.frame('v1'=c(0,0),'v2'=c(0,0),'v3'=c(0,0))
test<-apply(b1,1,function(x) {if (x[length(x)]>0) return (x/x[length(x)]) else return (0)})
test 将返回一个向量 0 0 我的问题是如何让测试返回类似
[,1] [,2]
v1 0 0
v2 0 0
v3 0 0
基本上,如果一行中的最后一个为零,我希望将行中的所有内容都设为 0,更重要的是,我希望返回一个列表,以便获得 v1、v2、v3 行名称(我可以更改为数据框如果返回是列表),现在返回向量 0,0 我丢失了 v1、v2、v3 的所有信息。为什么全零会产生如此大的差异?
【问题讨论】: