使用带有 lapply 的函数创建列并匹配值
using a function with lapply to create a column and match values
我有两个数据集 H 和 G。它们有一个名为 'diff' 的列,顾名思义,它包含每个数据集中两列之间的差异。我使用 lapply 来计算每个数据集的百分比(我的数据集比 H 和 G 多,所以想计算每个数据集中两列的百分比),但由于某种原因 lapply 给出然而,我的输出不会在通过它的数据集中创建 "perc" 列。我在这里做错了什么?
H<-data.frame(replicate(10,sample(0:20,10,rep=TRUE)))
G<-data.frame(replicate(10,sample(0:20,10,rep=TRUE)))
H[c(2,3,7,9),9]<-NA
G[c(1,5,7,8),9]<-NA
H$diff<-H$X10-H$X9
G$diff<-G$X10-G$X9
dsay<-list(H,G)
lapply(dsay,function(x)x$perc<-round((x$diff/x$X10)*100,1))
这个问题的扩展:
一旦我将百分比差异作为列使用:
H<-data.frame(replicate(10,sample(0:20,10,rep=TRUE)))
G<-data.frame(replicate(10,sample(0:20,10,rep=TRUE)))
H[c(2,3,7,9),9]<-NA
G[c(1,5,7,8),9]<-NA
H$diff<-H$X10-H$X9
G$diff<-G$X10-G$X9
H$perc<-round((H$diff/H$X10)*100,1)
G$perc<-round((G$diff/G$X10)*100,1)
我使用以下方法生成了一个图:
xyplot(X8+X9+X10~X1,H,type=c('p','l','g'),
col = c('yellow', 'green', 'blue','red'),
ylab='Count',layout=c(3, 1),
xlab=paste("H",'difference',min(pmin(H$perc, na.rm = TRUE),na.rm=TRUE),
'% change count'))
不要介意它会生成的图,但我想要得到的是我还显示了 "diff" 列的相应差异值以及最低差异(这是最小值功能正在做)。我试过使用 "match" 是徒劳的。有人可以帮忙吗?
如果我们也需要将更改反映在数据框对象中,可以使用 list2env
或 assign
。但是,我会在 list
本身内进行所有计算。
list2env(lapply(mget(c('H','G')), function(x)
{x$perc<-round((x$diff/x$X10)*100,1);x}), envir=.GlobalEnv)
我有两个数据集 H 和 G。它们有一个名为 'diff' 的列,顾名思义,它包含每个数据集中两列之间的差异。我使用 lapply 来计算每个数据集的百分比(我的数据集比 H 和 G 多,所以想计算每个数据集中两列的百分比),但由于某种原因 lapply 给出然而,我的输出不会在通过它的数据集中创建 "perc" 列。我在这里做错了什么?
H<-data.frame(replicate(10,sample(0:20,10,rep=TRUE)))
G<-data.frame(replicate(10,sample(0:20,10,rep=TRUE)))
H[c(2,3,7,9),9]<-NA
G[c(1,5,7,8),9]<-NA
H$diff<-H$X10-H$X9
G$diff<-G$X10-G$X9
dsay<-list(H,G)
lapply(dsay,function(x)x$perc<-round((x$diff/x$X10)*100,1))
这个问题的扩展:
一旦我将百分比差异作为列使用:
H<-data.frame(replicate(10,sample(0:20,10,rep=TRUE)))
G<-data.frame(replicate(10,sample(0:20,10,rep=TRUE)))
H[c(2,3,7,9),9]<-NA
G[c(1,5,7,8),9]<-NA
H$diff<-H$X10-H$X9
G$diff<-G$X10-G$X9
H$perc<-round((H$diff/H$X10)*100,1)
G$perc<-round((G$diff/G$X10)*100,1)
我使用以下方法生成了一个图:
xyplot(X8+X9+X10~X1,H,type=c('p','l','g'),
col = c('yellow', 'green', 'blue','red'),
ylab='Count',layout=c(3, 1),
xlab=paste("H",'difference',min(pmin(H$perc, na.rm = TRUE),na.rm=TRUE),
'% change count'))
不要介意它会生成的图,但我想要得到的是我还显示了 "diff" 列的相应差异值以及最低差异(这是最小值功能正在做)。我试过使用 "match" 是徒劳的。有人可以帮忙吗?
如果我们也需要将更改反映在数据框对象中,可以使用 list2env
或 assign
。但是,我会在 list
本身内进行所有计算。
list2env(lapply(mget(c('H','G')), function(x)
{x$perc<-round((x$diff/x$X10)*100,1);x}), envir=.GlobalEnv)