首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >循环中的对象选择

循环中的对象选择
EN

Stack Overflow用户
提问于 2018-07-27 00:12:22
回答 1查看 33关注 0票数 1

我目前遇到了R中循环内对象选择的永久问题。我相当确信这是一个常见的问题,但我似乎找不到答案,所以我在这里……

下面是我遇到的一个实际问题的示例:我有一个数据帧作为源,其中包含一系列按顺序命名的变量(X1、X2、X3、X4等)。我希望创建一个函数,该函数将数据作为源,将其与另一个数据集匹配,以创建新的组合数据集。

变量的数量会有所不同。我想向我的函数传递一个参数,告诉它我有多少个变量,函数需要相应地调整它运行代码的次数。这看起来像是for循环的任务,但在循环中选择和重新创建变量似乎也不是一种简单的方法。

下面是我需要重复的代码:

代码语言:javascript
运行
复制
new1$X1 <- data$X1[match(new1$matf1, data$rowID)]
new1$X2 <- data$X2[match(new1$matf1, data$rowID)]
new1$X3 <- data$X3[match(new1$matf1, data$rowID)]
new1$X4 <- data$X4[match(new1$matf1, data$rowID)]
new1$X5 <- data$X5[match(new1$matf1, data$rowID)]
(...)
return(new1)

我尝试过这样的方法:

代码语言:javascript
运行
复制
for(i in 1:5) {
  new1$Xi <- assign(paste0("X", i)), as.vector(paste0("data$X",i)[match(new1$matf1, data$rowID)])
}    

没有成功。

谢谢你的帮助!

EN

Stack Overflow用户

发布于 2018-07-27 01:19:13

您可以尝试这种简单的方法,但是连接会更有效:

代码语言:javascript
运行
复制
vals <- paste0('X',1:5)

for(i in vals){
    new1[[i]] <- data[[i]][match(new1$matf1, data$rowID)]
}
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51543286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档