[英]doing operations on multiple columns of data frame at once
假設我有一個 dataframe 列表,我想同時對第 1,2 和 4 列進行一些操作,同時對第 3,5 和 6 列進行一些其他操作。
假設我想將第 1,2,4 列乘以 2,將第 3,5 和 6 列乘以 3。
使用 lapply 我可以一次執行以下操作之一,但不能同時執行以下操作:
A<- apply(list, function(x) {2*X[,c(1,2,4)] 3*X[,c(3,5,6)]})
這會給出錯誤消息,例如無法識別的數字常量。 我怎樣才能同時完成它們。 這是因為如果我執行其中之一,我將返回 1、2、4 之類的列。
我們可以在乘以它們的常數后使用cbind
組合兩個子集。
lapply(list_df, function(df) cbind(df[c(1, 2, 4)] * 2, df[c(3, 5, 6)] * 3))
#[1]]
# a b d c e f
#1 2 8 20 21 15 18
#2 4 10 22 24 18 21
#3 6 12 24 27 21 24
#[[2]]
# a b d c e f
#1 2 8 20 21 15 18
#2 4 10 22 24 18 21
#3 6 12 24 27 21 24
數據
df <- data.frame(a = 1:3, b = 4:6, c = 7:9, d = 10:12, e = 5:7, f = 6:8)
list_df <- list(df, df)
為什么不讓事情變得簡單並保留列順序呢? 下面假設數據框只有6列,而且都需要相乘。
l <- list(df,df)
lapply(l, function(x) x*c(2,2,3,2,3,3))
Output
[[1]]
X1 X2 X3 X4 X5 X6
2 4 9 8 15 18
[[2]]
X1 X2 X3 X4 X5 X6
2 4 9 8 15 18
數據
df <- data.frame(1,2,3,4,5,6)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.