Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将类向量应用于数据帧_R_Dataframe_Shiny - Fatal编程技术网

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")