我有一個包含數字和非數字列的數據幀指定數值列一列,說按名稱選擇從數據幀
df <- data.frame(v1=1:20,v2=1:20,v3=1:20,v4=letters[1:20],v5=letters[1:20])
只選擇非數字列,我會用
fixCol <- !sapply(df,is.numeric)
但現在我還想包括一個特定的數字列,比如說v2。我的數據框非常大,列的順序也發生了變化,所以我不能使用數字對它進行索引,我真的想使用名稱'v2'。我試圖
fixCol$v2 = TRUE
但是這給了我這使得它不可能子集我的原始數據幀得到警告In fixCol$FR = TRUE : Coercing LHS to a list
只有fixCol
df[,fixCol]
給出:Error in .subset(x, j) : invalid subscript type 'list'
到底我的目標是除了這一個指定的列,使用類似的東西來縮放我的數據框的所有數字列
scaleCol = !fixCol
df_scaled = cbind(df[,fixCol], sapply(df[,scaleCol],scale))
我該如何做到最好?
這個很好,謝謝!我如何使df2包含所有不放入df1的列,而不反轉整個sapply語句?我試過df2 < - df [,!names(df1)]或df2 < - df [, - c(names(df1))]但都出錯。 我也需要df2,以便能夠縮放df2並將其與df1一起放入新的數據框中。 – Ciska
@Ciska我們可以使用'setdiff'或'%in%',即'df2 < - df [setdiff(names(df),names(df1))]' – akrun
Thanks @akrun!這工作很好 – Ciska