我目前遇到了R中循环内对象选择的永久问题。我相当确信这是一个常见的问题,但我似乎找不到答案,所以我在这里……
下面是我遇到的一个实际问题的示例:我有一个数据帧作为源,其中包含一系列按顺序命名的变量(X1、X2、X3、X4等)。我希望创建一个函数,该函数将数据作为源,将其与另一个数据集匹配,以创建新的组合数据集。
变量的数量会有所不同。我想向我的函数传递一个参数,告诉它我有多少个变量,函数需要相应地调整它运行代码的次数。这看起来像是for循环的任务,但在循环中选择和重新创建变量似乎也不是一种简单的方法。
下面是我需要重复的代码:
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)我尝试过这样的方法:
for(i in 1:5) {
new1$Xi <- assign(paste0("X", i)), as.vector(paste0("data$X",i)[match(new1$matf1, data$rowID)])
} 没有成功。
谢谢你的帮助!
发布于 2018-07-27 01:19:13
您可以尝试这种简单的方法,但是连接会更有效:
vals <- paste0('X',1:5)
for(i in vals){
new1[[i]] <- data[[i]][match(new1$matf1, data$rowID)]
}https://stackoverflow.com/questions/51543286
复制相似问题