将函数的输出赋给R中的两个变量
可能重复:将函数的输出赋给R中的两个变量,r,R,可能重复: 这似乎是一个简单的问题,但我想不出来,而且在我看过的R手册中也没有运气。我想查找dim(x),但我想在一行中将dim(x)[1]分配给a,将dim(x)[2]分配给b 我试过[ab]这取决于a和b中的内容。如果它们只是数字,请尝试返回如下向量: dim <- function(x,y) return(c(x,y)) dim(1,2)[1] # [1] 1 dim(1,2)[2] # [1] 2 编辑: 试试这个:x看起来没有办法做到这一点。实际上,唯一的解决方法是
这似乎是一个简单的问题,但我想不出来,而且在我看过的R手册中也没有运气。我想查找
dim(x)
,但我想在一行中将dim(x)[1]
分配给a
,将dim(x)[2]
分配给b
我试过
[ab]这取决于a
和b
中的内容。如果它们只是数字,请尝试返回如下向量:
dim <- function(x,y)
return(c(x,y))
dim(1,2)[1]
# [1] 1
dim(1,2)[2]
# [1] 2
编辑:
试试这个:x看起来没有办法做到这一点。实际上,唯一的解决方法是添加两行额外的代码:
temp <- dim(x)
a <- temp[1]
b <- temp[2]
temp这可能不是您想要的那么简单的解决方案,但这可以完成工作。如果您需要一次分配多个变量(并且您不知道有多少个值),那么它在将来也是一个非常方便的工具
Output您还可以编写自己的函数,该函数将始终生成全局a
和b
。但这是不可取的:
mydim <- function(x) {
out <- dim(x)
a <<- out[1]
b <<- out[2]
}
mydim我知道这是作弊:tmp我要看看。最简短的回答是不,R不会这样做。很长的答案是,您总是可以让它为您的特定用例工作。但是在很多其他语言中都没有“多重任务”。谢谢@Justin。我知道其他语言也会这样做,所以我希望有一个简单的方法。这不是一个巨大的效率问题或其他问题,只是R的一个稍微令人恼火的“怪癖”(其中有很多怪癖,尽管我很喜欢这种语言!)。我对你的建议有点困惑。dim()
函数是内置的,我只想在调用dim()
后将维度分配给任意对象a
和b
,而不执行该分配,谢谢您的建议--names()
只影响输出的列名。如果在运行该行之后尝试类似a*3
的操作,则会出现错误。不幸的是,我认为没有一个内置的方法来实现这一点,所以我只需要添加几行额外的代码来处理它。如果您有很多输出,这是一个非常好的解决方案,尽管对于我的情况来说可能不值得。我可能会用VariablesList替换你的第一行好主意,我已经在我的帖子中添加了这一点。
Output <- SomeFunction(x)
VariablesList <- letters[1:length(Output)]
for (i in seq(1, length(Output), by = 1)) {
assign(VariablesList[i], Output[i])
}
mydim <- function(x) {
out <- dim(x)
a <<- out[1]
b <<- out[2]
}
out <- dim(x)
out[1]
out[2]