如何在r中数据帧的非等长列的每行末尾添加一个数字
如果我问错了,我会向你道歉: 如何在长度不等的列的行的每一端添加一个数字 示例代码:如何在r中数据帧的非等长列的每行末尾添加一个数字,r,R,如果我问错了,我会向你道歉: 如何在长度不等的列的行的每一端添加一个数字 示例代码: x = 1:12 y = 1:10 z=1:8 attributes(df) = list(names = names(df),row.names=1:max(length(x), length(y),length(z)), class='data.frame') df # x y z #1 1 1 1 #2 2 2 2 #3 3 3 3 #4
x = 1:12
y = 1:10
z=1:8
attributes(df) = list(names = names(df),row.names=1:max(length(x), length(y),length(z)), class='data.frame')
df
# x y z
#1 1 1 1
#2 2 2 2
#3 3 3 3
#4 4 4 4
#5 5 5 5
#6 6 6 6
#7 7 7 7
#8 8 8 8
#9 9 9 <NA>
#10 10 10 <NA>
#11 11 <NA> <NA>
#12 12 <NA> <NA>
x=1:12
y=1:10
z=1:8
属性(df)=列表(名称=名称(df),行.名称=1:max(长度(x),长度(y),长度(z)),class='data.frame')
df
#x y z
#1 1 1 1
#2 2 2 2
#3 3 3 3
#4 4 4 4
#5 5 5 5
#6 6 6 6
#7 7 7 7
#8 8 8 8
#9 9 9
#10 10 10
#11 11
#12 12
首先,为了将长度不等的向量列表转换为数据帧
,在向量中填充NA
,您的代码不对,这一个更好
x <- 1:12
y <- 1:10
z <- 1:8
df <- list(x = x, y = y, z = z)
n <- max(sapply(df, length))
df <- lapply(df, function(x){
c(x, rep(NA, n - length(x)))
})
df <- do.call(cbind.data.frame, df)
谢谢,示例代码已更新。您可以显示预期的输出吗?在调用
属性之前,您拥有的是列表,而不是数据帧,并且希望使其成员的长度相同吗?很抱歉,我没有得到您…@Rui barradasne添加数字“3”对于总数据帧的每一行末端,但在第9行末端有NA,因此必须将其替换为3,类似于第10行,但对于第11行和第12行,只有y列必须替换为3列,而不是z列@markus@saisaran错误来自您对属性的调用,以查看它运行str(df)
。我会编辑我的答案。@saisaran完成。这太好了,现在对我来说很有用了……太棒了@鲁伊·巴拉达斯
df[] <- t(apply(df, 1, function(x){
if(anyNA(x)){
i <- min(which(is.na(x)))
x[i] <- 3
}
x
}))
df
# x y z
#1 1 1 1
#2 2 2 2
#3 3 3 3
#4 4 4 4
#5 5 5 5
#6 6 6 6
#7 7 7 7
#8 8 8 8
#9 9 9 3
#10 10 10 3
#11 11 3 NA
#12 12 3 NA