如何解决遍历rep函数中的times参数并将结果存储在R中的新变量中
> df
1 2 3 4 5 7 8 9 10 11 12 13 14 15 16
1 6 0 0 0 0 0 3 0 0 0 0 0 0 1
我尝试通过df中的条目复制数字1540,并将其存储在length(df)新变量中。因此,此循环应输出16个变量,例如
a1b <- c(1540)
a2b <- c(1540,1540,1540)
...
df <- P1_2008[1:16]
for(i in 1:15){
paste0("a",i,"b") <- rep(c(1540),times = df[i])
}
有人知道如何解决此问题吗?
最好的问候, 丹尼尔
df的输出是
dput(df)
c(`1` = 1,`2` = 6,`3` = 0,`4` = 0,`5` = 0,`7` = 0,`8` = 0,`9` = 3,`10` = 0,`11` = 0,`12` = 0,`13` = 0,`14` = 0,`15` = 0,`16` = 1)
解决方法
有帮助吗?
for(i in 1:15){
assign(paste0("a",i,"b"),rep(c(1540),times = df[i]))
}
如果您想通过字符串assign()
创建一个变量名,请与您联系。第二个参数是一个对象(在此为向量),该对象分配给第一个参数中给定的变量名(作为字符串)。
使用tidyverse
library(tidyverse)
df <- read.table(text = "1 6 0 0 0 0 0 3 0 0 0 0 0 0 1",header = F)
out <- map(df,~rep(1540,.x)) %>% purrr::set_names(.,paste0("a",seq_along(df),"b"))
list2env(out,envir = .GlobalEnv)
#> <environment: R_GlobalEnv>
由reprex package(v0.3.0)于2020-09-30创建
,分配是正确的选择,但是上面的答案却明显地倒退了。您应该将变量所需的文本作为第一个参数,并将所需的值作为第二个参数,这样就可以了。
for (i in 1:16){assign(paste0('a','b'),rep(1540,i))}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。