如何在r中的for循环中动态生成列

如何在r中的for循环中动态生成列,r,R,我想在for循环中生成动态列并为其赋值。下面是我的代码 new_df = data.frame() for(j in 1:3) { new_df[,paste0("code_",j,sep="")] = somevalue new_df[,paste0("target_",j,sep="")] = somevalue } 当我运行上述代码时,它会给我一个错误。如何动态生成上述列 new_df = list() for(i in 1:4){

我想在for循环中生成动态列并为其赋值。下面是我的代码

   new_df = data.frame()
   for(j in 1:3) {
      new_df[,paste0("code_",j,sep="")] = somevalue
      new_df[,paste0("target_",j,sep="")] = somevalue
   }
当我运行上述代码时,它会给我一个错误。如何动态生成上述列

   new_df = list()
   for(i in 1:4){
      for(j in 1:3){
          new_df[[paste0("code_",j,sep="")]] =i
         }
     }
    new_df = as.data.frame(new_df)
它只给我1行3列,而应该返回4行3列

这个怎么样

xy <- vector("list", 3)

for (j in 1:3) {
  x <- data.frame(j, j)
  names(x) <- c(paste0("code_",j,sep=""), paste0("target_",j,sep=""))
  xy[[j]] <- x
}

do.call(cbind, xy)

  code_1 target_1 code_2 target_2 code_3 target_3
1      1        1      2        2      3        3
这个怎么样

xy <- vector("list", 3)

for (j in 1:3) {
  x <- data.frame(j, j)
  names(x) <- c(paste0("code_",j,sep=""), paste0("target_",j,sep=""))
  xy[[j]] <- x
}

do.call(cbind, xy)

  code_1 target_1 code_2 target_2 code_3 target_3
1      1        1      2        2      3        3
使用创建data.frame时

它不包含列和行

如果您现在尝试通过值向量等方式添加列,则会抱怨数据中的元素多于行。数据框:

返回

  code_1 target_1 code_2 target_2 code_3 target_3
1      1        1      1        1      1        1
使用创建data.frame时

它不包含列和行

如果您现在尝试通过值向量等方式添加列,则会抱怨数据中的元素多于行。数据框:

返回

  code_1 target_1 code_2 target_2 code_3 target_3
1      1        1      1        1      1        1

我认为您可以使用get/assign函数和mutate函数的组合来执行此类操作

library(plyr)
df1<-data.frame(a=1:10) 
df2<-data.frame(b=11:20)

vec1<-2:11 #values to be incorporated into df1
vec2<-12:21#values to be incorporated into df2

for(j in 1:2){
assign(paste0("newdf",j),mutate(get(paste0("df",j)),k=get(paste0("vec",j))))
} #assigns df1 combined with vec1, to newdf1.

我认为您可以使用get/assign函数和mutate函数的组合来执行此类操作

library(plyr)
df1<-data.frame(a=1:10) 
df2<-data.frame(b=11:20)

vec1<-2:11 #values to be incorporated into df1
vec2<-12:21#values to be incorporated into df2

for(j in 1:2){
assign(paste0("newdf",j),mutate(get(paste0("df",j)),k=get(paste0("vec",j))))
} #assigns df1 combined with vec1, to newdf1.
您需要初始化数据表,否则无法向其中添加列。因此,如果您希望数据表中有10行,那么只需添加一个包含10个零的向量,然后执行相同的操作


您需要初始化数据表,否则无法向其中添加列。因此,如果您希望数据表有10行,例如,只需添加一个10个零的向量,然后执行相同的操作

请提供有关somevalue对象的信息。它将是一个整数值,可能与的重复。请提供有关somevalue对象的信息。它将是一个整数值,可能与我如何在列表中追加内容重复?它只返回从other for Loop添加的最后一个值我已经编辑了您提供的代码,但它只返回for Loop返回的最后一个值我如何在列表中追加?它只返回从其他for循环中添加的最后一个值。我编辑了您提供的代码,但它只返回for循环返回的最后一个值
library(plyr)
df1<-data.frame(a=1:10) 
df2<-data.frame(b=11:20)

vec1<-2:11 #values to be incorporated into df1
vec2<-12:21#values to be incorporated into df2

for(j in 1:2){
assign(paste0("newdf",j),mutate(get(paste0("df",j)),k=get(paste0("vec",j))))
} #assigns df1 combined with vec1, to newdf1.
library(data.table)

new_df <- 0 
new_df <- as.data.table(new_df)
for(j in 1:3) {
  # j<-1
  new_df[,paste0("code_",j):=1]
  new_df[,paste0("target_",j):=2] 
}