векторизация или повторение цикла для каждой переменной в кадре данных в R - PullRequest
0 голосов
/ 30 мая 2019

Я написал скрипт, выполняющий вычисления для одной переменной в кадре данных. Теперь мне нужно повторить это для в общей сложности 1007 переменных. Для каждой переменной расчеты дают 2 значения (частота встречаемости и численность). Целью является график, на котором 2 значения построены друг против друга для каждой переменной. Я был бы признателен за совет о том, как написать цикл или как использовать функцию apply для выполнения операции для каждой переменной в моем фрейме данных. (Вторым шагом будет создание матрицы с этими значениями, чтобы я мог построить их.) Спасибо!

library(dplyr)
data <- read.csv("cap_otu.csv", header = T)
prey <- filter(data, A100 > 0)
dim(prey)
prey2 <- subset(prey, select = -c(Site, Individual))
dim(prey2)
###
x <- as.matrix(prey2)
#get the sum for all rows (total abundance for each stomach)
x2 <- apply(x, 1, sum)
#get the sum for variable of interest e.g. A100 
x3 <- colSums(x)
x4 <- as.data.frame(x3)
x5 <- x4['A100',] # get total abundance value for A100
x5
x6 <- sum(x2) #sum the total abundance values of all individuals     
#that contain A100 
#calculate percentage value for abundance variable A100 against abundance  
# of all individuals containing variable A100
Var_A100 <- x5/x6*100  
Var_A100 # this is the abundance value for variable A100
# 9.835596 %
# calculate Frequency of Occurrence (FO) 
FO_A100 <- 15/153 
#15 = nr of individuals containing variable A100, 153 = total nr. of 
#individuals
FO_A100
# 0.09803922
...