【发布时间】:2015-08-06 11:50:21
【问题描述】:
我想在我的数据框上运行一个函数,该函数将只找到连续变量,并根据将连续变量划分为 2 个相等大小的组来添加新的分类变量。我有一个代码,用于将变量拆分为组并将其添加为新的分类变量,但是当我尝试在函数中使用它时它不起作用。可能是什么问题?另外,如何避免运行非连续变量? 这是一个玩具数据框:
df <- read.table(text = " birds wolfs
9 7
8 4
2 8
2 3
8 3
1 2
7 1
1 5
9 7
8 7 ",header = TRUE)
我的功能是:
for (i in names(df)) function (x) { as.factor( as.numeric( cut(df$i,2))) }
【问题讨论】:
-
或许
df[paste0(names(df), 'new')] <- lapply(df, function(x) factor(cut(x, 2, labels=FALSE))) -
在您的函数中,您使用的是
df$i。我会使用df[,i]。其次,输出需要存储在另一个对象左右。它没有定义。 -
例如
lst <- vector('list', ncol(df)); for(i in seq_along(df)) {lst[[i]] <- as.factor(as.numeric(cut(df[,i], 2)))} -
非常感谢@akrun..感谢您的帮助。
-
您应该能够跳过像这样的非数字变量:
df[paste0(names(df), 'new')] <- lapply(df[,sapply(names(df), function(x) is.numeric(df[,x]))], function(x) factor(cut(x, 2, labels=FALSE)))。