我正在创建一个data.frame
作为现有codebook
的{{1}},data.frame
的其中一列是每一列中的值范围现有codebook
中的一个。
我需要填充data.frame
列中的每个唯一值:class
用“ /”分隔它们
1)i尝试使用character
语句,其中条件是列的if else
,而class
是function
2)i还使用了unique()
语句并获取了列的第一个元素(使用if else
作为函数)并收到了预期的输出结果
x[1]
是现有数据框
dat
我希望输出function(dat){
dfr <- data.frame(
row.names = c(1:length(colnames(dat))),
ColumnNames = names(dat),
class = sapply(dat, class),
Range = sapply(dat, function(x)
if(class(x) == "character")
paste(unique(x), sep = " / ")
else if(class(x) == "numeric" || class(x) == "integer")
paste(min(x), max(x), sep = " - ")
else
class(x)),```
function(dat){
dfr <- data.frame(
row.names = c(1:length(colnames(dat))),
ColumnNames = names(dat),
class = sapply(dat, class),
Range = sapply(dat, function(x)
if(class(x) == "character")
x[1]
else if(class(x) == "numeric" || class(x) == "integer")
paste(min(x), max(x), sep = " - ")
else
class(x)),```
声明我需要的唯一值
范围列,但是我收到以下错误消息:
data.frame
但是,当我使用x [1]作为函数时,它返回列的第一个元素为 预期的
答案 0 :(得分:0)
在OP的第一个功能中
paste(unique(x), sep = " / ")
返回与输入(unique(x)
)相同的输出,该输入可以是长度大于1的向量。这是函数中唯一可以返回长度大于1的向量的行。代码可以更改为
paste(unique(x), collapse = " / ")
差异可以通过
重现paste(1:3, sep=' / ')
#[1] "1" "2" "3" # returns the same length
paste(1:3, collapse=" / ")
#[1] "1 / 2 / 3" # single string