如何在选择性列上使用lappy()R
我是一个新手程序员。我想知道如何在数据帧上重叠,但避免某些列如何在选择性列上使用lappy()R,r,lapply,R,Lapply,我是一个新手程序员。我想知道如何在数据帧上重叠,但避免某些列 # Some dummy dataframe df <- data.frame( grp = c("A", "B", "C", "D"), trial = as.factor(c(1,1,2,2)), mean = as.factor(c(44,33,22,11)), sd = as.factor(c(3,4,1,.5))) df <- lapply
# Some dummy dataframe
df <- data.frame(
grp = c("A", "B", "C", "D"),
trial = as.factor(c(1,1,2,2)),
mean = as.factor(c(44,33,22,11)),
sd = as.factor(c(3,4,1,.5)))
df <- lapply(df, function (x) {as.numeric(as.character(x))})
#一些虚拟数据帧
正如你可能猜到的,有很多方法。由于您似乎正在进行就地替换,实际上,for循环是合适的
df <- data.frame(
grp = c("A", "B", "C", "D"),
trial = as.factor(c(1,1,2,2)),
mean = as.factor(c(44,33,22,11)),
sd = as.factor(c(3,4,1,.5)))
my_cols <- c("trial", "mean", "sd")
for(mc in my_cols) {
df[[mc]] <- as.numeric(as.character(df[[mc]]))
}
df正如你可能猜到的,有很多方法。由于您似乎正在进行就地替换,实际上,for循环是合适的
df <- data.frame(
grp = c("A", "B", "C", "D"),
trial = as.factor(c(1,1,2,2)),
mean = as.factor(c(44,33,22,11)),
sd = as.factor(c(3,4,1,.5)))
my_cols <- c("trial", "mean", "sd")
for(mc in my_cols) {
df[[mc]] <- as.numeric(as.character(df[[mc]]))
}
df尝试这样做:
df[,3:4] <- lapply(df[,3:4], function (x) {as.numeric(as.character(x))})
df[,3:4]尝试这样做:
df[,3:4] <- lapply(df[,3:4], function (x) {as.numeric(as.character(x))})
df[,3:4]如果要按列名进行选择性转换:
library(dplyr)
df %>%
mutate_if(names(.) %in% c("mean", "sd"),
function(x) as.numeric(as.character(x)))
如果要按列名有选择地进行转换:
library(dplyr)
df %>%
mutate_if(names(.) %in% c("mean", "sd"),
function(x) as.numeric(as.character(x)))
这是有道理的。有没有一种方法可以说除了x以外的所有列都要这样做呢?这是有道理的。有没有一种方法可以说除了x以外的所有列都要这样做。如果列的位置很奇怪,这有关系吗?只要选择你想要的任何列,例如df[,c(2,4)],如果这些列是曾经需要的typecast。欢迎你。您还可以执行以下操作:df[,c(“mean”,“sd”)]您可以执行except like命令吗df[c(“grp”,“trial”),]我喜欢使用范围
语法回答的原因是它的有用性。假设您有100个列,并且您想要将92个这样的列转换为数字,您可以通过使用它们的索引轻松地做到这一点:c(1,2,11:100)
。您可以编写任何排除条件,但它们不应位于列名上。啊,好的。如果列的位置很奇怪,这有关系吗?只要选择你想要的任何列,例如df[,c(2,4)],如果这些列是曾经需要的typecast。欢迎你。您还可以执行以下操作:df[,c(“mean”,“sd”)]您可以执行except like命令吗df[c(“grp”,“trial”),]我喜欢使用范围
语法回答的原因是它的有用性。假设您有100个列,并且您想要将92个这样的列转换为数字,您可以通过使用它们的索引轻松地做到这一点:c(1,2,11:100)
。您可以编写任何排除条件,但它们不应位于列名上。library(tidyverse);df%>%变异于(2:4,解析号)
库(tidyverse);df%>%在(2:4,解析号)处变异