R 将数据帧传递给函数,保留原始列属性
我应该知道,但我不知道。这是因为R中的因素可能是一场噩梦。这是一项后续行动。我希望你们中的一些人能够比R手册更详细地解释如何在向自定义函数传递数据帧时保留列属性。到目前为止,我找到的最有用的信息来自哈德利的高级R编程网站。但这一部分很短。以下是我所拥有的:R 将数据帧传递给函数,保留原始列属性,r,attributes,structure,R,Attributes,Structure,我应该知道,但我不知道。这是因为R中的因素可能是一场噩梦。这是一项后续行动。我希望你们中的一些人能够比R手册更详细地解释如何在向自定义函数传递数据帧时保留列属性。到目前为止,我找到的最有用的信息来自哈德利的高级R编程网站。但这一部分很短。以下是我所拥有的: 编辑:我已经将添加到我的GitHub中(编辑:链接现在转到gsub.dataframe.R)。另外,我想我可能有一个很好的方法来确定是否在新的数据帧中设置stringsAsFactors=FALSE。或者,作为一个更简单的选择,我可以添加一
编辑:我已经将添加到我的GitHub中(编辑:链接现在转到
gsub.dataframe.R
)。另外,我想我可能有一个很好的方法来确定是否在新的数据帧中设置stringsAsFactors=FALSE
。或者,作为一个更简单的选择,我可以添加一个stringsAsFactors
参数。是否可以对多组进一步的参数使用…
?像有…
是grep
和data.frame
的进一步参数吗
建立一些数据
set.seed(24)
num <- rep(1, 10); int <- 1:10; fac <- sample(LETTERS[1:3], 10, TRUE)
D <- data.frame(num, int, fac); D$char <- as.character(letters[1:10])
使用sub
参数调用gsub
时不NULL
和往常一样,我感谢你的帮助
注意:我采纳了哈德利的建议(你为什么不呢?)并将其分为两个函数。下面我的答案是一个新函数,它只调用
gsub
进行正则表达式匹配。列类问题通过一个基于原始类重新分配类的小函数得到了解决
.reClass <- function(x, type)
{
switch(type,
character = as.character(x),
integer = as.integer(x),
factor = as.factor(x),
numeric = as.numeric(x))
}
> args(gsub.dataframe)
function (pattern, replacement, data, use.nums = FALSE, ...)
NULL
您是否希望列
int
的类在插入XXX
后仍保持整数?(也许你认为XXX会被强迫成为NA)问得好。我还没有完全考虑到这一点,但我可能希望在数据帧中有一列混合字母数字(即24EX6,或类似的东西)的情况下,将其强制为字符
。也许NA
会更好?另一个主要问题是,character
列到底发生了什么?这种行为是预期的,因为gsub
返回字符向量,而data.frame
默认情况下会将字符串强制为因子。请看一看。您可以替换您的dc
> args(grep.dataframe)
function (pattern, X, sub = NULL, ...)
NULL
.reClass <- function(x, type)
{
switch(type,
character = as.character(x),
integer = as.integer(x),
factor = as.factor(x),
numeric = as.numeric(x))
}
> args(gsub.dataframe)
function (pattern, replacement, data, use.nums = FALSE, ...)
NULL
> sapply(D, class)
# num int fac char
# "numeric" "integer" "factor" "character"
> x <- gsub.dataframe("2|A", "XXX", data = D, ignore.case = TRUE)
> x
# num int fac char
# 1 1 1 C XXX
# 2 1 2 B b
# 3 1 3 XXX c
# 4 1 4 XXX d
# 5 1 5 C e
# 6 1 6 XXX f
# 7 1 7 C g
# 8 1 8 XXX h
# 9 1 9 B i
# 10 1 10 XXX j
> sapply(x, class)
# num int fac char
# "numeric" "integer" "factor" "character"