簡體   English   中英

R中多個數據幀的相同功能 - 不在數據幀列表中

[英]Same function over multiple data frames in R - not over a list of data frames

這個問題幾乎就是我想做的事情,除了輸出作為數據幀列表提供的事實。 讓我們重現上面提到的SE問題的例子。

假設我有2個數據幀:

df1
ID col1 col2
x  0     10
y  10    20
z  20    30

df1
ID col1 col2
a  0     10
b  10    20
c  20    30

我想要的是帶有ifelse結果的第4列。 我的理由是:

如果在任何data.frame中col1> = 20,我可以使用模式“df”命名,則新列res = 1,否則res = 0。

但我想在每個data.frame中創建一個具有相同名稱模式的新列,而不是將所有這些data.frame放在列表中並應用該函數,除非我可以“提取”此列表的每個第三維回到個人數據框架。

謝謝

Per @Frank ...如果我對你要找的內容的理解是正確的,請考慮使用data.table MWE:

library(data.table); 
addcol <- function(x) x[,res:=ifelse(col1>=20,1,0)]
df1 <- data.table(ID=c("x","y","z"),col1=c(0,10,20),col2=c(10,20,30))
df2 <- data.table(ID=c("x","y","z"),col1=c(20,10,20),col2=c(10,20,30))
#modified df2 so you can see different effects
lapply(list(df1,df2),addcol) 

> df1
   ID col1 col2 res
1:  x    0   10   0
2:  y   10   20   0
3:  z   20   30   1

> df2
   ID col1 col2 res
1:  x   20   10   1
2:  y   10   20   0
3:  z   20   30   1

這是有效的,因為data.table通過對表的引用來操作,因此在函數內部實際上是更新基礎表,而不僅僅是對表的作用域引用。

暫無
暫無

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

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