簡體   English   中英

R-在列表中多個數據框的一列上應用函數

[英]R - rapply function across one column of multiple dataframes in a list

我有多個數據框的列表。 每個數據框包含相同的列。 我想對列表中所有數據框的特定列進行更改。 但是,我似乎無法弄清楚如何調用單個列。

df1 <- data.frame("col1"=c("foo-1", "foo-1", "bar-7"), "col2" = c("blu-e", "gre-en", "blue"))
df2 <- data.frame("col1"=c("bar", "bar", "foo-2", "foo"), "col2" = c("green", "orang-e", "yell-ow", "pink"))
dflist <- list(df1, df2)


>df1
col1    col2
foo-1   blu-e
foo-1   gre-en
bar-7   blue

>df2
col1    col2
bar     green
bar     orang-e
foo-2   yell-ow
foo     pink

我想,以取代-在這兩個df1df2 ,但只有在col2

例:

>df1
col1    col2
foo-1   blue
foo-1   green
bar-7   blue

>df2
col1    col2
bar     green
bar     orange
foo-2   yellow
foo     pink

我試過這個代碼(這是我從兩個SO問題(相關調整了12 ):

newdf <- rapply(dflist, function(x) gsub(pattern="\\-", "", x, `[[`, "col2"), how="list")

但這gsubscol1col2 例:

>df1
col1   col2
foo1   blue
foo1   green
bar7   blue

>df2
col1    col2
bar     green
bar     orange
foo2    yellow
foo     pink

如何僅引用一列? 我對apply家庭仍然是新手,因此如果需要其他功能,請告訴我。

編輯: @alistaire在評論中提供了答案

Rapply很復雜,但是您實際上並不需要它。 只是lapply會做:lapply(dflist,function(x){x $ col2 <-gsub('-','',x $ col2); x})– alistaire 2月24日4:35

使用lapply代替:

lapply(dflist, transform, col2 = gsub("-", "", col2))

暫無
暫無

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

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