是否可以动态创建新的变量名称?
我想将列表中的数据帧读入最后带数字的新变量.像orca1,orca2,orca3 ......
如果我尝试类似的东西
paste("orca",i,sep="")=list_name[[i]]
Run Code Online (Sandbox Code Playgroud)
我收到这个错误
target of assignment expands to non-language object
Run Code Online (Sandbox Code Playgroud)
还有另一种方法吗?
我收到了错误
Error in <my code> : target of assignment expands to non-language object
Run Code Online (Sandbox Code Playgroud)
要么
Error in <my code> : invalid (do_set) left-hand side to assignment
Run Code Online (Sandbox Code Playgroud)
要么
Error in <my code> : invalid (NULL) left side of assignment
Run Code Online (Sandbox Code Playgroud)
它是什么意思,我该如何预防呢?
在我的数据集中,我有60个组要分析,并使用R Markdown将其放入HTML报告中.因为我想对每个组应用相同的分析,我希望有一种方法可以动态生成代码块/分析.
简单地说,我想避免复制块60次.
我碰到这个这个问题,它使用儿童knitr.我试图用虹膜数据集复制它.在下面的例子中,我想做的就是生成三个H4标题,每个标题一个.
值得注意的是,我没有嫁给这种方法,它似乎与我想要做的事情有关.
这是我使用的文件:
parent.RMD文件.这将是我的"主人"报告.
Automate Chunks of Analysis in R Markdown
========================================================
```{r setup, echo=FALSE}
library(knitr)
```
```{r run-numeric-md, include=FALSE}
out = NULL
for (i in as.character(unique(iris$Species))) {
out = c(out, knit_child('child.Rmd'))
}
Run Code Online (Sandbox Code Playgroud)
```
这是child.Rmd.
#### Species = `r [i]`
Run Code Online (Sandbox Code Playgroud) 我有一个我手动创建的对象列表,如下所示:
rand1 <- rnorm(1e3)
rand2 <- rnorm(1e6)
myObjects <- NULL
myObjects[[1]] <-rand1
myObjects[[2]] <-rand2
names(myObjects) <- c("rand1","rand2")
Run Code Online (Sandbox Code Playgroud)
我正在研究捆绑对象的一些代码并将它们放在S3中.然后我在EC2中有代码,我想获取myObjects列表并自动"解包"它.在这个例子中,列表只有两个对象,名称是已知的,但我如何编码它来处理任何长度和任何名称的列表?
#pseudo code
for each thing in myObjects
thing <- myObjects[[thing]]
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚如何取名(myObjects)[1]并将其转换为一个对象的名称,我将为其分配myObjects [[1]]的内容.我可以处理循环,但创建每个对象有点让我挂起.我确信这很简单,但我不能理解它.
在R中,"assign('x',v)"将名称为"x"的对象设置为v.将"x"替换为将文本函数应用于变量x的结果.然后"分配"显示其价值.
不幸的是,"assign('paste('name(','x',')',sep =''),v)"失败.因此,如果'x'是变量x,我可以设置它的值,但我不能给它的元素命名.
可以解决这个问题吗?也许是一个解析的伎俩?谢谢.
我有一个简单的两个矢量数据帧(长度= 30),看起来像这样:
> mDF
Param1 w.IL.L
1 AuZgFw 0.5
2 AuZfFw 2
3 AuZgVw 74.3
4 AuZfVw 20.52
5 AuTgIL 80.9
6 AuTfIL 193.3
7 AuCgFL 0.2
8 ...
Run Code Online (Sandbox Code Playgroud)
我想使用每一行来形成30个单值数值向量,其中包含从中获取的向量的名称mDF$Param1,以便:
> AuZgFw
[1] 0.5
Run Code Online (Sandbox Code Playgroud)
等等
我尝试过融化和铸造,但我怀疑可能有更简单的方法吗?
我想做的是使用dplyr :: filter创建一些新的数据帧,以将数据从一个巨大的数据帧中分离为一堆较小的数据帧。
对于可重现的基本案例沼泽简单示例,我使用了以下示例:
filter(mtcars, cyl == 4)
Run Code Online (Sandbox Code Playgroud)
我知道我需要将其分配给它自己的数据框,因此我从以下内容开始:
paste("Cylinders:", x, sep = "") <- filter(mtcars, cyl == 4))
Run Code Online (Sandbox Code Playgroud)
那没有用-它给了我在这里发现的错误:赋值扩展为非语言对象
从那里,我发现了这一点:在R中使用粘贴创建变量名
(也是上述作者的大事)
这使我想到了这一点,它起作用了:
assign(paste("gears_cars_cylinders", 4, sep = "_"), filter(mtcars, cyl == 4)) %>%
group_by(gear) %>%
summarise(number_of_cars = n())
Run Code Online (Sandbox Code Playgroud)
通过“工作”,我的意思是我得到一个名为gears_cars_cylinders_4的数据框,其中包含来自
filter(mtcars, cyl == 4) %>%
group_by(gear) %>%
summarise(number_of_cars = n())
Run Code Online (Sandbox Code Playgroud)
但最终,我认为我需要将整个东西包装到一个函数中,并能够将其的柱面数提供给它mtcars$cyl。我在想什么plyr::ldply(mtcars$cyl, function_name)?
在我的实际数据中,我需要分解大约70个不同的类,以分成单独的数据框,然后放入DT::datatableShiny中的选项卡,这真是一团糟。无论如何。
当我尝试这个:
function_name <- function(x){
assign(paste("gears_cars_cylinders", x, sep = "_"), filter(mtcars, cyl == x)) %>%
group_by(gear) %>%
summarise(number_of_cars …Run Code Online (Sandbox Code Playgroud)