我在R中写一个函数。它分配给" y"数据框元素的类。这是我的功能示例。
f=function(x,data) {
y=class(eval(substitute(x),data))
print(y)
}
d=data.frame(a=1,b=2)
f(a,d)
[1] "numeric"
我可以使用其他任何东西而不是类(eval(替换(x),数据))?
答案 0 :(得分:1)
它可以以这种方式工作......稍微修改一下你如何使用f()
f = function (x, data) {
y = lapply(data,class)
print(y[[x]])
}
d <- data.frame ( a=1, b=2)
f("a",d)
这是通用的,可以用于所有列。
答案 1 :(得分:0)
如果您希望将每个列的类附加到数据框作为新列。请使用以下代码
library(dplyr)
df = data.frame(a = c(1:3),b = c("A","B","C"), c = as.factor(c("G","H","H")),stringsAsFactors = F)
class_df = lapply(df,class) %>% bind_rows()
names(class_df) = paste0(names(class_df),"_class")
df = cbind(df,class_df)