lapply 一个数据框列表的函数,然后 cbind 到相应的数据框
lapply a function to a data frame list and then cbind to corresponding data frame
问题:两个数据框,每个包含三列但行数不同
>view(archae_pro)
motif obs pred
AAB 1189 760.1757
CDD 1058 249.7147
DDE 771 415.1314
FBB 544 226.3529
>view(archae_end)
motif obs pred
ABG 1044 749.4967
GBC 634 564.5753
AGG 616 568.7375
CGG 504 192.5312
BTT 404 200.4589
我想进行卡方拟合优度检验。此外,计算标准化残差并将它们列绑定到相应的数据帧。
我的尝试如下:
df.list <- list (
df_archae_pro,
df_archae_end,
)+
prop <- lapply(df.list, function (x) cbind(x$pred/sum(x$pred)))
chisquare <- lapply(df.list, function(x) chisq.test (x$obs, p=prop))
Rstudio 抛出一个错误
Error in chisq.test(x$obs, p = prop) :
'x' and 'p' must have the same number of elements
我的两便士错误:chisq.test 不知何故没有读到与正确 data.frame 对应的“prop”?!
我几天前才开始学习 rstudio,所以请原谅任何明显的错误。
如果能帮助我计算标准化残差并将它们列绑定到数据框,我将不胜感激。
这是一个跟进问题。我如何绘制几何条形图(图案与 stdres)和小平面环绕 1 列和对应于每个数据的多行。我尝试了以下
myplots<-lapply(df.list,function(x)
p<-ggplot(x,aes(x=motif,y=stdres)) +
geom_bar(stat="identity") +
facet_wrap(x)
)
myplots
但是它抛出一个错误,
Error in `[.data.frame`(.subset2(df, col)[1], NA) :
undefined columns selected
我做错了什么?
简单地说,将第一个参数添加到 cbind
,并在第二个参数上添加新列的命名参数 prop
,同时将结果分配回 df.list
,因为您正在添加新列每个数据框。
然后,在下一次调用中添加对象限定符 x$
到 prop
以引用测试中的列:
df.list <- lapply(df.list, function(x)
cbind(x, prop=x$pred/sum(x$pred))
)
chisquare <- lapply(df.list, function(x)
chisq.test(x$obs, p=x$prop)
)
要分配测试结果,cbind
提取的值:
df.list <- lapply(df.list, function(df) {
results <- chisq.test(df$obs, p=df$prop)
cbind(
df,
stat = results$statistic,
pval = results$p.value,
stdres = results$stdres
)
})
问题:两个数据框,每个包含三列但行数不同
>view(archae_pro)
motif obs pred
AAB 1189 760.1757
CDD 1058 249.7147
DDE 771 415.1314
FBB 544 226.3529
>view(archae_end)
motif obs pred
ABG 1044 749.4967
GBC 634 564.5753
AGG 616 568.7375
CGG 504 192.5312
BTT 404 200.4589
我想进行卡方拟合优度检验。此外,计算标准化残差并将它们列绑定到相应的数据帧。 我的尝试如下:
df.list <- list (
df_archae_pro,
df_archae_end,
)+
prop <- lapply(df.list, function (x) cbind(x$pred/sum(x$pred)))
chisquare <- lapply(df.list, function(x) chisq.test (x$obs, p=prop))
Rstudio 抛出一个错误
Error in chisq.test(x$obs, p = prop) :
'x' and 'p' must have the same number of elements
我的两便士错误:chisq.test 不知何故没有读到与正确 data.frame 对应的“prop”?!
我几天前才开始学习 rstudio,所以请原谅任何明显的错误。
如果能帮助我计算标准化残差并将它们列绑定到数据框,我将不胜感激。
这是一个跟进问题。我如何绘制几何条形图(图案与 stdres)和小平面环绕 1 列和对应于每个数据的多行。我尝试了以下
myplots<-lapply(df.list,function(x)
p<-ggplot(x,aes(x=motif,y=stdres)) +
geom_bar(stat="identity") +
facet_wrap(x)
)
myplots
但是它抛出一个错误,
Error in `[.data.frame`(.subset2(df, col)[1], NA) :
undefined columns selected
我做错了什么?
简单地说,将第一个参数添加到 cbind
,并在第二个参数上添加新列的命名参数 prop
,同时将结果分配回 df.list
,因为您正在添加新列每个数据框。
然后,在下一次调用中添加对象限定符 x$
到 prop
以引用测试中的列:
df.list <- lapply(df.list, function(x)
cbind(x, prop=x$pred/sum(x$pred))
)
chisquare <- lapply(df.list, function(x)
chisq.test(x$obs, p=x$prop)
)
要分配测试结果,cbind
提取的值:
df.list <- lapply(df.list, function(df) {
results <- chisq.test(df$obs, p=df$prop)
cbind(
df,
stat = results$statistic,
pval = results$p.value,
stdres = results$stdres
)
})