我有限的心智能力意味着我真的很难在 R 中执行以下任务,任何建议都将不胜感激!
我目前有 100 个数据帧存储为列表 (my.dfs)。在每个数据框中有六列(a、b、c、d、e、f)。数据帧(80-150)之间的行数不同,但我认为这无关紧要。所有列都是数字。
我想计算数据帧 1 中列 a 的模式,然后计算数据帧 2、3、4 ... 到数据帧 100,并将结果存储在新向量(a.mode)中。所以 a.mode 应该有 100 个模式值,每个值都来自一个数据帧。然后,我希望对列 b、c、d、e、f 重复此操作,每个列都可以有自己的向量(b.mode、c.mode 等)。
我的问题是 R 中的计算模式似乎并不简单。我使用包(modeest)和命令:
mlv(column.here, method="mfv")
所以我的代码目前看起来像这样:
library(modeest)
my.dfs
a.mode<-NULL
for( j in my.dfs){
a.mode<-c(a.mode, mlv(j[,"column.a"], method="mfv"))
}
然而,这会产生不正确的混乱输出。
同样,我尝试过:
for( j in my.dfs){
a.mode<-c(a.mode, mlv(j$column.a, method="mfv"))
}
但我收到错误命令:
Error in j$column.a : $ operator is invalid for atomic vectors
我还尝试将我的列表分成 100 个单独的数据帧,以查看在单独的数据帧上运行循环是否更有效。但是,除了将列表分成 100 个数据框之外,我还没有完成:
t<-1:100
for (q in 1:length(t)){
assign(paste("metric.data", t[q], sep=""), data.frame(subset(my.dfs[[q]])))
}
我不知道如何另外运行一个循环遍历所有 100 个数据帧,计算每个数据帧中 column.a 的模式并将它们存储在向量 (a.mode) 中,然后对 column.b、column.c 重复此操作等等,如上所述。
任何想法和代码都会很棒