我有90个变量:
x111 <- 23
x112 <- 54
...
x1130 <- 69
x2111 <- 149
x2112 <- 12
...
x2130 <- 45
x3111 <- 85
x3112 <- 105
...
x3130 <- 501
我需要计算每个变量(SS)的平方和,例如 x111 ^ 2 + x112 ^ 2 + ... + x3130 ^ 2
我具有的功能是:
SSobs_calculator <- function(obs) {
obs_value <- (obs)^2
total_obs_value = total_obs_value + obs_value
return(obs_value)
}
问题是我不知道如何传递变量。在以下代码中:
for(i in 1:90){
SSobs_calculator(paste0("x1_11",i)
}
不起作用,因为我无法传递以开头的变量 x1_2 ..和x1_3 ...每个组的索引也变为30,而90将无效。
我应该将所有变量都合并到数据框中,然后将其平方吗?还有其他解决方案吗?
答案 0 :(得分:3)
我们可以使用list
获取mget
中对象的值,然后通过取Reduce
({{ 1}}}个元素
sum
或者在获取+
中的元素之后,list
然后一步完成Reduce(`+`, lapply(mget(ls(pattern = '^x\\d+$')), `^`, 2))
list
unlist