r - 变异:一次分配多个变量
问题描述
我有一个如下所示的函数(简化)
get_identifiers<-function(shares){
result<-c()
for(share in shares){
result<-rbind(result,c("2", "2"))
}
return (result)
}
它返回两列!
现在,我想调用该函数并将其值分配给我现有 tibble 的两个变量。我正在寻找类似的东西
res %>% mutate(vars(c("identifier","sedol")),get_identifiers(symbol))
我怎样才能做到这一点?
我知道我可以做类似以下的事情,这似乎不是很有效
res %>% mutate(identifier=get_identifiers(symbol)[1])
%>% mutate(sedol=get_identifiers(symbol)[2])
解决方案
您可以对功能进行一些更改 -
get_identifiers<-function(shares){
result<-c()
for(share in shares){
result<- rbind(result,c("2", "2"))
}
result <- data.frame(result)
names(result) <- c("identifier","sedol")
return (result)
}
(有更好的方法来编写上面的代码,但我知道这只是一个简化的例子。)
然后将输出保存在列表中并用于unnest_wider
将它们放在不同的列中。
library(dplyr)
library(tidyr)
res %>%
mutate(data = list(get_identifiers(symbol))) %>%
unnest_wider(data)
推荐阅读
- node.js - 如何在 express 中包含 api 路由器的 css 文件?
- eclipse - 在 pom .xml 中显示错误:Failure to transfer org.apache.maven.shared:file-management:pom:3.0.0
- file - 使用 fancybox 和 google doc viewer 查看 j2ee web 应用程序中的文件
- php - PHP中的多个数据库选择,但分别打印ID
- r - 在 R 中的模拟退火算法中添加约束
- android - Android与iOS中ble扫描率的差异
- python - 如何在基于类的视图中进行排序
- java - Tomcat 泽西 NoSuchMethodError
- swift - 使用iOS13无法读取ePassport的NFC芯片
- stripe-payments - “ChargeCreateOptions”不包含“SourceId”的定义