R 转换多数据帧的变量性质

R 转换多数据帧的变量性质,r,R,我正在尝试更改多个数据帧的列性质。 这里是一个简单的例子,我想让数据帧B_1和B_2列从整数转换为因子。但是,我从下面的代码中收到一条错误消息 B_1 = data.frame( x=c("01","02","03")) B_1$x = as.integer(B_1$x) B_2 = data.frame( x=c(1,2,3,4,5,6,7) ) B_2$x = as.integer(B_2$x) for (i in 1:2) get(paste0("B_",i))[["x"]]

我正在尝试更改多个数据帧的列性质。 这里是一个简单的例子,我想让数据帧B_1和B_2列从整数转换为因子。但是,我从下面的代码中收到一条错误消息

B_1 = data.frame( x=c("01","02","03"))
B_1$x = as.integer(B_1$x)

B_2 = data.frame( x=c(1,2,3,4,5,6,7) )
B_2$x = as.integer(B_2$x)

for (i in 1:2)
    get(paste0("B_",i))[["x"]] <- as.factor(get(paste0("B_",i))[["x"]])
B_1=data.frame(x=c(“01”、“02”、“03”))
B_1$x=as.integer(B_1$x)
B_2=数据帧(x=c(1,2,3,4,5,6,7))
B_2$x=as.integer(B_2$x)
(我在1:2中)

get(paste0(“B_”,i))[[“x”]]一个可能的解决方案是首先列出所有B_x数据帧,然后将它们转换为因子。像这样:

B_1 = data.frame( x=c("01","02","03"))
B_2 = data.frame( x=c(1,2,3,4,5,6,7) )

li = list()
for (i in 1:2) {li = c(li, get(paste0("B_",i)))}
for (k in 1:2) {li[[k]] = as.factor(li[[k]])}
这将返回:

> li
$x
[1] 01 02 03
Levels: 01 02 03

$x
[1] 1 2 3 4 5 6 7
Levels: 1 2 3 4 5 6 7

我希望这能解决您的问题。

一个可能的解决方案是首先列出所有B_X数据帧,然后将它们转换为因子。像这样:

B_1 = data.frame( x=c("01","02","03"))
B_2 = data.frame( x=c(1,2,3,4,5,6,7) )

li = list()
for (i in 1:2) {li = c(li, get(paste0("B_",i)))}
for (k in 1:2) {li[[k]] = as.factor(li[[k]])}
这将返回:

> li
$x
[1] 01 02 03
Levels: 01 02 03

$x
[1] 1 2 3 4 5 6 7
Levels: 1 2 3 4 5 6 7

我希望这能解决您的问题。

我们可以使用
mget
获取
列表中的所有数据集,然后使用
mutate\u each
将列转换为
因子(如果有多个列)

库(dplyr)

lst我们可以使用
mget
获取
列表中的所有数据集
,然后使用
mutate\u每个
将列转换为
因子
(如果有多个列)

库(dplyr)

谢谢,它可以工作,但是我如何分别将列表放在正确的数据框中?您最初是如何定义每个B_X的?逐一地?为什么不使用这个列表呢?也就是说,如果您需要使用B_5和B_43,那么请执行
li[[5]]
li[[43]]
。我知道,我的想法是将所有多个数据库合并在一起以形成一个大数据集,这就是为什么我希望使用数据帧而不是使用列表。我确实有不止一列谢谢,它是有效的,但是我如何将列表分别放在正确的数据框中?您最初是如何定义每个B_X的?逐一地?为什么不使用这个列表呢?也就是说,如果您需要使用B_5和B_43,那么请执行
li[[5]]
li[[43]]
。我知道,我的想法是将所有多个数据库合并在一起以形成一个大数据集,这就是为什么我希望使用数据帧而不是使用列表。我确实有不止一列你是对的,我的真实数据中有多列。但是,我收到一条错误消息,说找不到函数“mutate_each”。@RaphaelLi它在
dplyr
包中。必须先加载包。无法加载包。loadNamespace(i,c(lib.loc,.libpath()),versionCheck=vI[[i]])中出错:没有调用包慏BI?此外:警告消息:程序包慸plyr?是在R版本3.3.0下生成的错误:的包或命名空间加载失败慸plyr?@RaphaelLi有一些名称空间问题。您正在使用当前的R版本吗?我在
r3.2.3
上使用了
dplyr\u 0.4.3
。您也可以使用
base R
。i、 e<代码>res干杯,我得到了我想要的,你是对的,我在真实数据中得到了多个列。但是,我收到一条错误消息,说找不到函数“mutate_each”。@RaphaelLi它在
dplyr
包中。必须先加载包。无法加载包。loadNamespace(i,c(lib.loc,.libpath()),versionCheck=vI[[i]])中出错:没有调用包慏BI?此外:警告消息:程序包慸plyr?是在R版本3.3.0下生成的错误:的包或命名空间加载失败慸plyr?@RaphaelLi有一些名称空间问题。您正在使用当前的R版本吗?我在
r3.2.3
上使用了
dplyr\u 0.4.3
。您也可以使用
base R
。i、 e<谢谢,我得到了我想要的