【问题标题】:Naming variables and assigning values inside the loop in R在R中的循环内命名变量和赋值
【发布时间】:2019-05-10 21:13:46
【问题描述】:

我有 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 将无效。

我应该将所有变量加入一个数据框,然后平方吗?还有其他解决方案吗?

【问题讨论】:

    标签: r loops variables


    【解决方案1】:

    我们可以通过mget 获取list 中对象的值,然后通过list 元素的sum (+) 将幂和Reduce 取为单个数字

    Reduce(`+`, lapply(mget(ls(pattern = '^x\\d+$')), `^`, 2))
    

    或者在获取listunlist 中的元素之后,然后一步完成^

    sum(unlist(mget(ls(pattern = '^x\\d+$')))^2)
    

    数据

    x111 <- 23
    x112 <- 54
    

    【讨论】:

    • 我得到一个列表中的所有元素并平方,但是当我试图总结时,我得到一个错误:'总和错误(unlist(+,SSobs1l)):无效'类型'(内置)参数'
    • @FeyziBagirov 假设全局环境中的所有对象后跟模式“x”后跟一些数字。假设您有一些名为x242 &lt;- 'A' 的对象,那么它也将在list 中,并且它是一个字符类。请检查全局环境中是否有类似的对象
    猜你喜欢
    • 2011-02-28
    • 2014-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-13
    • 2018-12-07
    • 1970-01-01
    • 2017-04-19
    相关资源
    最近更新 更多