是否可以动态创建新的变量名称?
我想将列表中的数据帧读入最后带数字的新变量.像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)
还有另一种方法吗?
Sha*_*ane 111
用途assign:
assign(paste("orca", i, sep = ""), list_name[[i]])
Run Code Online (Sandbox Code Playgroud)
Joh*_*ohn 32
在我看来,你可能会用一个列表,而不是使用更好orca1,orca2等等......那将是orca[1],orca[2]...
通常你要制作一个变量列表,除了数字之外什么都不区分,因为这个数字是以后访问它们的便捷方式.
orca <- list()
orca[1] <- "Hi"
orca[2] <- 59
Run Code Online (Sandbox Code Playgroud)
否则,assign就是你想要的.
小智 9
不要制作数据框.保留列表,命名其元素但不附加它.
这样做的最大原因是,如果你在旅途中制作变量,你几乎总是会不得不迭代它们中的每一个来执行有用的东西.在那里,您将再次被迫迭代您在运行中创建的每个名称.
命名列表的元素并遍历名称要容易得多.
就附加而言,它在R中的编程实践非常糟糕,如果你不小心会导致很多麻烦.
如果你有
varname <- c("a", "b", "d")
Run Code Online (Sandbox Code Playgroud)
你可以做
get(varname[1]) + 2
Run Code Online (Sandbox Code Playgroud)
为了
a + 2
Run Code Online (Sandbox Code Playgroud)
或者
assign(varname[1], 2 + 2)
Run Code Online (Sandbox Code Playgroud)
为了
a <- 2 + 2
Run Code Online (Sandbox Code Playgroud)
因此,当您想要评估使用变量(例如连接)的公式时,您可以使用 GET,当您想要为预先声明的变量赋值时使用 ASSIGN。
赋值的语法: assign(x, value)
x:变量名,以字符串形式给出。不进行强制转换,将使用长度大于 1 的字符向量的第一个元素,并带有警告。
值:要分配给 x 的值。