我想创建一个对数据框的行和列重新排序的函数。但是,它不起作用,但是,如果我尝试手动对数据框进行重新排序,一切都很好,因此我必须对如何重新排序有基本的了解。
这是我的功能:
CorrOrder <- function (df, new_df) {
new_order = c(19:24, 7:12, 1:6, 13:18)
new_df <- df[new_order, new_order]
}
#This does absolutely nothing and doesn't return an error
CorrOrder(AllData[["DataUnsorted"]][["DataFrameZXWY"]],
AllData[["DataFrameWXYZ"]])
这很好用:
AllData[["DataFrameWXYZ"]] <- AllData[["DataUnsorted"]][["DataFrameZXWY"]][c(19:24, 7:12, 1:6, 13:18), c(19:24, 7:12, 1:6, 13:18)]
这将创建一些示例数据:
data.frame(replicate(24,sample(0:1,24,rep=TRUE)))
答案 0 :(得分:1)
我认为有两件事出了错:
new_df
不应是函数的输入值,而应是输出值。尝试一下:
CorrOrder <- function(df) {
new_order = c(19:24, 7:12, 1:6, 13:18)
new_df <- df[new_order, new_order]
return(new_df)
}
CorrOrder(AllData[["DataUnsorted"]][["DataFrameZXWY"]])
答案 1 :(得分:1)
您的函数未返回任何内容。例如,这也不会产生任何结果:
library(tidyverse)
df <- tibble(a = c(1, 2, 3))
test_function <- function(df) {
df_new <-
df %>%
mutate(a = a + 2)
}
test_function(df)
取出新的变量名和箭头,您的代码可能会起作用:
test_function <- function(df) {
df %>%
mutate(a = a + 2)
}
或者:
test_function <- function(df) {
df_new <-
df %>%
mutate(a = a + 2)
return(df_new)
}