参考R中的向量元素

时间:2015-06-10 00:27:34

标签: r loops vector

我有调查数据的数据框,我想从中获取相对频率。

我从文件中创建了一个独特的属名称向量:

> CoralGenera <- unique(dfrm$V5)

然后对于向量中的每个元素(Genus)(CoralGenera),我想运行这个函数:

> mean(dfrm$V5 == "Genus") 

但它将每个字符串保存为向量中的一个元素,以便在阻碍我的函数中使用。

我试过了:

> for (Genus in CoralGenera){
   CGrfreq <- c(CGrfreq,mean(dfrm$Genus == Genus))}

哪个跑了,但返回了一个包含比CoralGenera更多元素的向量

我一直在尝试使用lapply()来避免复制,但无法让它工作:

> lapply(seq_along(CoralGenera), mean(dfrm$Genus == Genus))

> lapply(Genus(CoralGenera), mean(dfrm$Genus == "Genus"))

> lapply(CoralGenera, mean(dfrm$Genus == x))

> lapply(CoralGenera, mean(dfrm$Genus == CoralGenera[v]))

每次返回如下错误消息: match.fun(FUN)出错:   'mean(dfrm $ Genus == Genus)'不是函数,字符或符号

这是我第一次在R中编写这样的代码,所以非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

目前尚不清楚你想要的意思。尝试以下方法之一:

sapply(CoralGenera, function(genus) mean(dfrm$Genus[dfrm$V5 == genus]))
sapply(CoralGenera, function(genus) mean(dfrm$V5[dfrm$V5 == genus]))