例如,讓我們用字符串由以下數據幀的每一個元素:R:將函數應用於一個數據幀
df <- data.frame(X = LETTERS[1:3], Y = LETTERS[4:6], row.names = c("r1", "r2", "r3"), stringsAsFactors = F)
> df
X Y
r1 A D
r2 B E
r3 C F
現在,我想這一功能應用到數據幀中的每個元素:
my_f <- function(x) paste0(x, x)
這應該產生這樣的結果:
>df
X Y
r1 AA DD
r2 BB EE
r3 CC FF
我一直在使用嵌套的for循環:
for (i in 1:dim(df)[1]) {
for (j in 1:dim(df)[2]) {
df[i, j] = my_f(df[i, j])
}
}
我不知道是否有一個更短/更快的方式來實現相同的結果嗎?請注意,輸出必須是具有相同行和列名稱的數據框。
的op'f自定義函數也工作在這裏 – agenis
@agenis是的,我想'strrep'應該更快速 – akrun
心靈解釋之間''df'and DF的區別[] '?如果我使用'df [] < - apply(df,2,my_f)'它可以工作,但沒有'[]'會丟失rownames。 – Haboryme