我正在嘗試使用一個簡單的函式對串列的每個資料幀的列執行操作。這是資料:
a<-LETTERS[1:6]
b<-1:6
df1<-as.data.frame(cbind(a,b))
df2<-as.data.frame(cbind(a,b))
df3<-as.data.frame(cbind(a,b))
df_list<-list(df1,df2,df3)
這些是我想用來重命名串列中的資料框的名稱:
df_names<-c("first","second","third")
到目前為止,我已經這樣做了:
df2_list <- lapply(df_list, function(df_list) {
for(i in df_list[[i]]$b) {
df_double<-list((as.numeric(df_list[[i]]$b))*(2))
names(df_double)<-df_names[i]
}
df_list
} )
這給了我這個錯誤:
Error in .subset2(x, i, exact = exact) : invalid subscript type 'list'
但是,如果我嘗試分別運行這兩個命令,例如在串列的第一個資料幀上,它們會執行我想要的操作:
df_double<-list((as.numeric(df_list[[1]]$b))*(2))
names(df_double)<-df_names[1]
我知道我錯過了一些東西,但我看不到什么......提前致謝!
uj5u.com熱心網友回復:
使用lapply乘以b2,并利用列setNames分配名稱。
setNames(lapply(df_list, function(x) transform(x, b = b * 2)), df_names)
#$first
# a b
#1 A 2
#2 B 4
#3 C 6
#4 D 8
#5 E 10
#6 F 12
#$second
# a b
#1 A 2
#2 B 4
#3 C 6
#4 D 8
#5 E 10
#6 F 12
#$third
# a b
#1 A 2
#2 B 4
#3 C 6
#4 D 8
#5 E 10
#6 F 12
為清楚起見,您也可以在單獨的步驟中執行此操作。
names(df_list) <- df_names
lapply(df_list, function(x) transform(x, b = b * 2))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/335432.html
