在数据帧中混合“stringsAsFactors”

在数据帧中混合“stringsAsFactors”,r,dataframe,R,Dataframe,我正在尝试创建一个R数据框架,其中一些列将被视为因子,其他列将被视为字符串 fruits <- data.frame(fruit = character(), descr = character()) fruits <- rbind(fruits, data.frame(fruit = "apple", descr = "jjrkgnser")) fruits <- rbind(fruits, data.frame(fruit = "apple", descr = "aprtg

我正在尝试创建一个R数据框架,其中一些列将被视为因子,其他列将被视为字符串

fruits <- data.frame(fruit = character(), descr = character())
fruits <- rbind(fruits, data.frame(fruit = "apple", descr = "jjrkgnser"))
fruits <- rbind(fruits, data.frame(fruit = "apple", descr = "aprtgh"))
fruits <- rbind(fruits, data.frame(fruit = "pear", descr = "akjreg"))


符合要求。有更好的方法吗?

我不确定您是将
rbind
用作说明性示例还是用例(以这种方式扩展数据的内存效率非常低),但假设有必要,那么您可以使用
tible
包中的
数据帧
使输入更节省一些(在
dplyr
等软件包生态系统中)

库(TIBLE)

水果我不确定您是将
rbind
用作示例还是用例(以这种方式扩展数据的内存效率非常低),但假设有必要,那么您可以使用
tibble
包中的
data\u frame
使您的输入更加简洁(在
dplyr
等软件包生态系统中)

库(TIBLE)
默认情况下,创建带有因子列的数据集(如果可能,不使用rbind)
默认情况下,创建带有因子列的数据集(如果可能,不使用rbind)

果蔬使用命令
作为.factor
作为.character
,如果需要的话,分别用于每一列。您是否使用
rbind
作为脚本的一部分?为什么不立即创建整个数据集?类似于
fruits@AntoniosK的东西?您介意将其作为答案发布吗?我不知道怎么做。@davidernburg是的,我知道t他效率低下,但我无法轻松地将其余代码矢量化。我的内存占用率将很低,但您的评论对其他SO来说是非常好的。如果需要,请分别为每列使用命令
as.factor
as.character
。您是否将
rbind
作为脚本的一部分?为什么不立即创建整个数据集ce?类似于
fruits@AntoniosK的东西你介意把它作为一个答案发布吗?我不知道怎么做。@DavidArenburg是的,我知道效率低下,但我不能轻松地将我的其余代码矢量化。我的内存占用量会很低,但你的评论对其他人来说非常好。很好,谢谢!这甚至对我不断增长的对象也有效。很好,thanks!这甚至适用于我不断增长的对象。很好的解决方案,我会记住我自己的用途。我的生产环境有dplyr 0.4.3,还没有发布tibble。我没有完全控制这一点,我宁愿降低依赖性。很好的解决方案,我会记住我自己的用途。我的生产环境有dplyr 0.4.3,我也有esn还没有发布tibble。我还不能完全控制它,我宁愿降低依赖性。
fruits <- data.frame(fruit = factor(), path = character(), stringsAsFactors = FALSE)
fruits <- rbind(fruits, data.frame(fruit = factor("apple"), path = "jjrkgnser", stringsAsFactors = FALSE))
fruits <- rbind(fruits, data.frame(fruit = factor("apple"), path = "aprtgh", stringsAsFactors = FALSE))
fruits <- rbind(fruits, data.frame(fruit = factor("pear"), path = "akjreg", stringsAsFactors = FALSE))
> str(fruits)
'data.frame':   3 obs. of  2 variables:
 $ fruit: Factor w/ 2 levels "apple","pear": 1 1 2
 $ path : chr  "jjrkgnser" "aprtgh" "akjreg"
library(tibble)
fruits <- data_frame(fruit = factor(), descr = character())
fruits <- rbind(fruits, data_frame(fruit = factor("apple"), descr = "jjrkgnser"))
fruits <- rbind(fruits, data_frame(fruit = factor("apple"), descr = "aprtgh"))
fruits <- rbind(fruits, data_frame(fruit = factor("pear"), descr = "akjreg"))
# creating the dataset (no usage of rbind if possible) with factor columns by default
fruits <- data.frame(fruit = c("apple", "apple", "pear"), 
                     path = c("jjrkgnser", "aprtgh", "akjreg"))

# transform this column to a character vector
fruits$path = as.character(fruits$path)