将数据框传递给函数,保留原始列属性

丰富的雕刻

我应该知道这一点,但我不知道。那是因为R中的因素绝对是一场噩梦。这是我先前问题的跟进我希望你们中的一些人能够比R手册更详细地说明如何将数据帧传递给自定义函数时如何保留列属性。到目前为止,我挖掘出的最有用的信息是来自Hadley的Advanced R Programming网站。但是该部分很短。这是我所拥有的:


编辑:我已经将源代码添加到我的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])

这是对自定义函数及其结果的调用。

(newD <- grep.dataframe("6|(a|f)", D, sub = "XXX", ignore.case = TRUE))
#    num int fac char
# 1    1   1 XXX  XXX
# 2    1   2   B    b
# 3    1   3   C    c
# 4    1   4 XXX    d
# 5    1   5 XXX    e
# 6    1 XXX   C  XXX
# 7    1   7 XXX    g
# 8    1   8   B    h
# 9    1   9   B    i
# 10   1  10 XXX    j

我没有做任何事情,但已经尝试了一切我能想到的,以保持作为关于列多的信息,我可以(即class(x) <-attr(x, "name") <-attributes(x) <-I(x),等)。从上面看,您看到的结果是绝对正确的。但是,以下结果令人不安。我可以使用一些帮助来获取最终的数据结构以匹配原始数据结构。我在想switch声明可以解决问题?

注意

> args(grep.dataframe)
function (pattern, X, sub = NULL, ...) 
NULL

sub参数调用gsub时不NULL

一如既往,我感谢您的帮助。


注意:我接受了Hadley的建议(为什么不呢?),并将其分为两个功能。我在下面的回答是一个仅要求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

use.nums是否用于“使用数字?”,是否替换数字列上的模式。D是要馈送的原始数据,以对它们的列进行模式替换(在某些条件下)。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将函数传递给数据框中的列-Python

来自分类Dev

将分组数据框传递给dplyr中的函数

来自分类Dev

将数据框的列传递给内部函数

来自分类Dev

R:动态地将数据框传递给函数

来自分类Dev

将属性从 `<a>` 传递给函数

来自分类Dev

动态将数据框列传递给“聚合”时如何保留列名

来自分类Dev

将pandas数据框传递给类

来自分类Dev

将函数结果传递给属性

来自分类Dev

将附加属性传递给函数绑定

来自分类Dev

转换数据框列并保留原始数据

来自分类Dev

在C ++中将原始数据类型传递给函数

来自分类Dev

将共享指针还是原始指针传递给函数

来自分类Dev

将ArrayList传递给函数会对原始ArrayList进行更改

来自分类Dev

使用shared_ptr将原始指针传递给函数

来自分类Dev

将额外的数据传递给函数

来自分类Dev

将附加的数据帧传递给函数

来自分类Dev

将原始数据传递给pdfJS而不是url?

来自分类Dev

将字符串参数传递给函数作为dplyr中的数据框列名称

来自分类Dev

使用apply将列传递给函数时,数据框不会更新

来自分类Dev

在 R 中一次将数据框中的多列传递给函数

来自分类Dev

将函数应用于数据框的某些列,同时将结果存储在原始数据框中

来自分类Dev

在数据框中查找要传递给函数的列/变量-R

来自分类Dev

通过onclick事件将HTML端的value属性数据传递给JavaScript函数

来自分类Dev

将输入属性数据传递给其他输入函数参数-角度

来自分类Dev

在withColumn下将数据框列和外部列表传递给udf

来自分类Dev

R:将多个参数传递给数据框行,仅使用某些列

来自分类Dev

将数据框转换为矩阵,并保留一列作为属性

来自分类Dev

在传递给Plotly函数之前,如何重塑熊猫数据框?

来自分类Dev

如何将数组的AJAX列数据传递给JS函数?

Related 相关文章

  1. 1

    将函数传递给数据框中的列-Python

  2. 2

    将分组数据框传递给dplyr中的函数

  3. 3

    将数据框的列传递给内部函数

  4. 4

    R:动态地将数据框传递给函数

  5. 5

    将属性从 `<a>` 传递给函数

  6. 6

    动态将数据框列传递给“聚合”时如何保留列名

  7. 7

    将pandas数据框传递给类

  8. 8

    将函数结果传递给属性

  9. 9

    将附加属性传递给函数绑定

  10. 10

    转换数据框列并保留原始数据

  11. 11

    在C ++中将原始数据类型传递给函数

  12. 12

    将共享指针还是原始指针传递给函数

  13. 13

    将ArrayList传递给函数会对原始ArrayList进行更改

  14. 14

    使用shared_ptr将原始指针传递给函数

  15. 15

    将额外的数据传递给函数

  16. 16

    将附加的数据帧传递给函数

  17. 17

    将原始数据传递给pdfJS而不是url?

  18. 18

    将字符串参数传递给函数作为dplyr中的数据框列名称

  19. 19

    使用apply将列传递给函数时,数据框不会更新

  20. 20

    在 R 中一次将数据框中的多列传递给函数

  21. 21

    将函数应用于数据框的某些列,同时将结果存储在原始数据框中

  22. 22

    在数据框中查找要传递给函数的列/变量-R

  23. 23

    通过onclick事件将HTML端的value属性数据传递给JavaScript函数

  24. 24

    将输入属性数据传递给其他输入函数参数-角度

  25. 25

    在withColumn下将数据框列和外部列表传递给udf

  26. 26

    R:将多个参数传递给数据框行,仅使用某些列

  27. 27

    将数据框转换为矩阵,并保留一列作为属性

  28. 28

    在传递给Plotly函数之前,如何重塑熊猫数据框?

  29. 29

    如何将数组的AJAX列数据传递给JS函数?

热门标签

归档