У меня есть векторный список, в котором иногда значения варьируются от 1 до 7, а иногда от 1 до 5. Я хочу пройти через них l oop и получить подсчет частоты с помощью функции table
, а затем поместить эти значения во фрейм данных , но я получаю сообщение об ошибке subscript out of bounds
. Он делает это, потому что ожидает значение integer
. Когда это произойдет, я хотел бы установить целочисленное значение на 0.
Есть ли простая функция, которую я мог бы обернуть вокруг значения integer
, например somefunction(t[[6]])
, которая возвращает 0
?
#list of vectors, the first has values 1 to 7, the second has 1 to 5,
#the third is 1 to 7 again and is only included to show that my real problem has many
# more vectors to evaluate
vectors<-list(c(1,1,2,2,3,3,3,4,4,5,5,5,6,6,6,6,7,7,7,7,7),
c(1,1,2,2,3,3,3,4,4,5,5,5,5,5,5,5,5,5,5,5,5),
c(1,1,2,2,3,3,3,4,4,5,5,5,6,6,6,6,7,7,7,7,7))
#empty data frame
df<-data.frame()
#loop through list of vectors and get frequncy count per list
for (i in 1:length(vectors)) {
#count frquency of each value as variable t
t<-table(vectors[[i]])
#put frequency count of each value in the data frame - the problem is
#that in the second vector, there are only values of 1 to 5, so t[[6]]
#reports "subscript out of bounds". I want to change this to a value of 0
df<-rbind(df,cbind(t[[1]],t[[2]],t[[3]],t[[4]],t[[5]],t[[6]],t[[7]]))
}
df