How to combine for loop with function I made in R? , and want to loop in satis.list. However, it failed to loop..
I made a function 'site_table' below.
> satis.list <- paste0("s1_", 1:19)
> satis.list <- c(satis.list,"s2","s3","s4")
> satis.list
[1] "s1_1" "s1_2" "s1_3" "s1_4" "s1_5" "s1_6" "s1_7" "s1_8" "s1_9"
[10] "s1_10" "s1_11" "s1_12" "s1_13" "s1_14" "s1_15" "s1_16" "s1_17" "s1_18"
[19] "s1_19" "s2" "s3" "s4"
And make a function site_table below.
> site_table = function(var){
+ var_name <- eval(substitute(var),eval(work.data))
+ a <- table(var_name,work.data$site)
+ b.list <- list(a[2,1], a[2,2], a[2,3])
+ b.data <- data.frame(t(b.list))
+ b.data
+ }
I want to repeat this like below from "s1_1" to "s4" in satis.list
> site_table(s1_1)
X1 X2 X3
1 2 2 7
> site_table(s1_2)
X1 X2 X3
1 2 3 4
> site_table(s1_3)
X1 X2 X3
1 3 1 4
I tried to using this code but failed.
> c.data <- data.frame()
> for(i in satis.list){
+ site_table(i)
+ c.data <- rbind(c.data, b.data)
+ }
Error in table(var_name, work.data$site) :
all arguments must have the same length
It is the output what I want to make lastly.
Row.names X1 X2 X3
1 s1_1 2 2 7
1 s1_2 2 3 4
1 s1_3 3 1 4