2017-09-15 98 views
0

我正在写一个R中的函数。它给数据帧元素的“y”类赋值。这是我的例子功能。R:分配给数据帧元素的变量类

f=function(x,data) { 
    y=class(eval(substitute(x),data)) 
    print(y) 
} 

d=data.frame(a=1,b=2) 

f(a,d) 
[1] "numeric" 

我可以使用其他任何东西而不是class(eval(substitute(x),data))吗?

+0

嗨Marina,你打印不返回在函数中的值(这是不一样的)。其次,你想达到什么目的?我很难理解你想要做什么 – Llopis

+0

我想以另一种方式获得与现在相同的结果。 Y应该是来自数据框的列的类。 – Marina

回答

1

它可能以这种方式工作...有轻微的修改你如何使用f()

f = function (x, data) { 
    y = lapply(data,class) 
    print(y[[x]]) 
} 

d <- data.frame (a=1, b=2) 

f("a",d) 

这是通用的,可用于所有列。

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)