Ale*_*lex 1 r dataframe assign
我正在尝试将一列数据分配给现有数据框中的新列.数据框在循环中变化,从scores.d到score.e.我想要的输出是得到score.X $ new.col填充vals,其中X被当前的dfname替换.
dfnames <- c("d","e")
scores.d <- data.frame(x = 1, y = 1:10)
scores.e <- data.frame(x = 2, y = 10:20)
vals <- 60:70
for (i in seq_along(dfnames)){
assign(get(paste0("scores.",dfnames[i]))$new.col,vals)
}
Error in assign(get(paste0("scores.", dfnames[i]))$new.col, vals) :
invalid first argument
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误,因为当我需要包含列名时,assign正在寻找一个字符串作为第一个参数.简单地将$ new.col添加到粘贴命令不起作用(假设$不从字符串转换).
我是R的新手,不知道分配东西的注意事项.我想要制作一个数据框列表,然后用vals填充每个数据框,但它没有工作,因为我指定了特定的列,在我的实际数据中,数据框仍然是预先存在的,我只是想添加到它们这里.思考?
编辑*@Jason提供了一个答案,通过将值分配给临时变量,然后将其分配回来.为我的目的工作正常,但我尝试了一个字符串列表代替通过创建名称paste0(),它仍然给了我错误.首先,杰森的工作答案是:
dfnames <- c("d","e")
scores.d <- data.frame(x = 1, y = 1:10)
scores.e <- data.frame(x = 2, y = 11:20)
vals <- 61:70
for (i in dfnames){ #don't need seq_along
dat<-get(paste0("scores.",i)) #pull up the data
dat$new.col<-vals
assign(paste0('scores.',i),dat) #replace old data frame with new
}
Run Code Online (Sandbox Code Playgroud)
现在有一个名称列表替换粘贴过程(请注意对seq_along的更改):
dfnames <- c("d","e")
scores.d <- data.frame(x = 1, y = 1:10)
scores.e <- data.frame(x = 2, y = 11:20)
vals <- 61:70
# for demonstrative purposes only, these were created in a loop in my code
full.dfnames[1] <- "Scores.d"
full.dfnames[2] <- "Scores.e"
for (i in seq_along(dfnames)){ #added seq_along back for the name index
dat<-get(full.dfnames[i]) #pull up the data
dat$new.col<-vals
assign(full.dfnames[i],dat) #replace old data frame with new
}
>Error in assign(get(paste0("scores.", dfnames[i]))$new.col, vals) :
invalid first argument
Run Code Online (Sandbox Code Playgroud)
我相信以下工作可能不像你想的那样简化.
dfnames <- c("d","e")
scores.d <- data.frame(x = 1, y = 1:10)
scores.e <- data.frame(x = 2, y = 11:20)
vals <- 61:70
for (i in dfnames){ #don't need seq_along
dat<-get(paste0("scores.",i)) #pull up the data
dat$new.col<-vals
assign(paste0('scores.',i),dat) #replace old data frame with new
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12949 次 |
| 最近记录: |