2017-09-15 65 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)