动态地从现有数据框创建新数据框

Sta*_*ser 2 r dataframe

我必须从一个我不熟悉的数据框架创建一个新的数据帧.

新数据框应该与旧数据框具有相同的结构,但它应该为空.

我们假设旧数据框如下:

> c1 = c(1,2,3)
> c2 = c("str1", "str2", "str3")
> c3 = c(3.2, 2.4, 5.6)
> m <- data.frame(c1,c2,c3)
> m
  c1   c2  c3
1  1 str1 3.2
2  2 str2 2.4
3  3 str3 5.6
> names(m) <- c("var1", "var2", "var3")
> m
  var1 var2 var3
1    1 str1  3.2
2    2 str2  2.4
3    3 str3  5.6
Run Code Online (Sandbox Code Playgroud)

新数据框应如下所示:

newDat <- data.frame("var1" = as.numeric(), "var2" = as.character(), "var3" = as.numeric())
Run Code Online (Sandbox Code Playgroud)

关键是我不知道现有数据框(m)是如何制作的

Spa*_*man 6

只需从原始数据框中取出任何行:

> testDat = m[FALSE,]
Run Code Online (Sandbox Code Playgroud)

这与您的newDat示例之间存在细微差别,因为我testDat的因子列仍然具有原始因子的级别:

> str(testDat)
'data.frame':   0 obs. of  3 variables:
 $ var1: num 
 $ var2: Factor w/ 3 levels "str1","str2",..: 
 $ var3: num 
Run Code Online (Sandbox Code Playgroud)

如果那不是问题,那么就完成了工作,如果这是一个问题那么你可能需要循环变量并重置任何因素......