Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将函数的输出赋给R中的两个变量_R - Fatal编程技术网

将函数的输出赋给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]