簡體   English   中英

在R中從其他數據框中添加列

[英]In R Add Columns From a Different Dataframe

我是R新手! 我正在嘗試使用一個數據框作為元數據在另一個數據框中創建列。 我正在使用apply,但沒有創建列。 有想法嗎?

meta <- data.frame(colname = c("a","b","c"))
frm <- data.frame(z=c(1,2,3))
frm["y"] <- 1
colnames(frm)
apply(meta, 1, function(x) {
  frm[x["colname"]] <- 1
})
colnames(frm)  #hoping for a/b/c columns now

哪個輸出:

> meta <- data.frame(colname = c("a","b","c"))
> frm <- data.frame(z=c(1,2,3))
> frm["y"] <- 1
> colnames(frm)
[1] "z" "y"
> apply(meta, 1, function(x) {
+   frm[x["colname"]] <- 1
+ })
[1] 1 1 1
> colnames(frm)  #hoping for a/b/c columns now
[1] "z" "y"

更新:在這里找到答案: 如何從R Apply函數訪問全局/外部作用域變量?

需要使用<<-訪問應用范圍之外的變量

meta <- data.frame(colname = c("a","b","c"))
frm <- data.frame(z=c(1,2,3))
frm["y"] <- 1
colnames(frm)
apply(meta, 1, function(x) {
  frm[x["colname"]] <<- 1  #DBL ARROW DID IT
})
colnames(frm)  #hoping for a/b/c columns now

“ meta”中的colnamefactor類,因此我們需要將其轉換為character並使用它在“ frm”中創建新列

frm[as.character(meta[[1]])] <- 1
head(frm,2)
#  z y a b c
#1 1 1 1 1 1
#2 2 1 1 1 1

如果我們需要遍歷“元”名稱

for(cn in as.character(meta$colname)) frm[[cn]] <- 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM