R 将类向量应用于数据帧
我有一个要应用于数据帧的类的字符向量,以便将该数据帧中每个字段的当前类转换为向量中相应的条目。例如:R 将类向量应用于数据帧,r,dataframe,shiny,R,Dataframe,Shiny,我有一个要应用于数据帧的类的字符向量,以便将该数据帧中每个字段的当前类转换为向量中相应的条目。例如: frame <- data.frame(A = c(2:5), B = c(3:6)) classes <- c("character", "factor") for(i in 1:2) { frame[i] <- lapply(frame[i], paste("as", classes[i], sep = ".")) } frame如果您不反对在没有for循环的情况下使用
frame <- data.frame(A = c(2:5), B = c(3:6))
classes <- c("character", "factor")
for(i in 1:2) { frame[i] <- lapply(frame[i], paste("as", classes[i], sep = ".")) }
frame如果您不反对在没有for
循环的情况下使用lappy
,您可以尝试以下方法
frame[] <- lapply(seq_along(frame), function(x) {
FUN <- paste("as", classes[x], sep = ".")
match.fun(FUN)(frame[[x]])
})
str(frame)
# 'data.frame': 4 obs. of 2 variables:
# $ A: chr "2" "3" "4" "5"
# $ B: Factor w/ 4 levels "3","4","5","6": 1 2 3 4
frame[]如果您不反对在没有for
循环的情况下使用lappy
,您可以尝试以下方法
frame[] <- lapply(seq_along(frame), function(x) {
FUN <- paste("as", classes[x], sep = ".")
match.fun(FUN)(frame[[x]])
})
str(frame)
# 'data.frame': 4 obs. of 2 variables:
# $ A: chr "2" "3" "4" "5"
# $ B: Factor w/ 4 levels "3","4","5","6": 1 2 3 4
frame[]数据的来源是什么?为什么不在中读取数据时应用这些类,而不是以后应用它们呢?另外,是否可以使用lappy
,而不使用显式for
循环?比如frame[]数据的来源是什么?为什么不在中读取数据时应用这些类,而不是以后应用它们呢?另外,是否可以使用lappy
,而不使用显式for
循环?喜欢frame[]非常感谢!这种方法非常有效。我正在构建一个闪亮的应用程序,在某种程度上,它允许用户加载一个数据文件,并为该文件中的每个变量指定所需的类类型。将您的代码与isolate()函数相结合就可以了。非常感谢!这种方法非常有效。我正在构建一个闪亮的应用程序,在某种程度上,它允许用户加载一个数据文件,并为该文件中的每个变量指定所需的类类型。将您的代码与isolate()函数相结合就可以做到这一点。
frame <- frame2 <- data.frame(A = c(2:5), B = c(3:6))
classes <- c("character", "factor")